2

我有一个从 Windows 生成的文件,我必须将其粘贴到 linux 下的脚本中。我的脚本工作正常,除了在每一行的末尾我得到一个 ^M 字符。

如何使用 bash 删除它?

目前我的脚本是:

#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
    echo $CUSTOMER
done
4

5 回答 5

5

^M 应该是 windows 换行符 \r,因此您只需删除所有 \r 您可以使用 tr 工具来实现这一点,您可以从 bash 脚本中调用该工具,这是来自维基百科文章(我没有验证它):

tr -d '\r' < inputfile > outputfile

因此,从 bash 它应该类似于

VAR=`echo -n $CUSTOMER | tr -d '\r'`
于 2010-06-09T13:18:41.940 回答
5

在进一步处理之前 调用dos2unix 。exp.csv

于 2010-06-09T13:19:50.383 回答
1

我经常使用tr. CR 字符是八进制的 013:

tr -d '\013' < $FILE

所以在你的循环中,那就是

for CUSTOMER in `tr -d '\013' < exp.csv`
于 2010-06-09T13:20:23.173 回答
0

文件上的 dos2unix 命令

于 2010-06-09T14:37:20.243 回答
0

有几种方法可以char M从文件中删除错误

  1. 使用命令dos2unix file_name

  2. 在 vi 编辑器中打开文件,进入命令模式并键入:%s/ctrl+v ctrl+m//g这将从文件中删除所有坏字符。现在:wq用于保存和退出

  3. sed -e "s/^M//" filename(exist file name) > newfilename(new name)

    sed -e "s/^M//" 文件名(已有文件名) > newfilename(新文件名)

注意:要在 unix 服务器上查找所有 java 文件的错误字符,请点击以下命令

find . -name "*.java*"  -type f | xargs grep -l ^M *

同样,您可以使用"*.*"而不是"*.java"所有类型的文件

于 2016-06-14T14:35:36.787 回答