如何删除M字符?

时间:2010-06-09 13:10:36

标签: windows bash cat

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

如何用bash删除它?

目前我的脚本是:

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

5 个答案:

答案 0 :(得分:5)

在进一步处理之前,在exp.csv上致电dos2unix

答案 1 :(得分:4)

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

tr -d '\r' < inputfile > outputfile

因此,从bash开始它应该是

VAR=`echo -n $CUSTOMER | tr -d '\r'`

答案 2 :(得分:1)

我使用tr做了很多。 CR字符在八进制中是013:

tr -d '\013' < $FILE

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

for CUSTOMER in `tr -d '\013' < exp.csv`

答案 3 :(得分:0)

dos2unix命令ont he file

答案 4 :(得分: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 //”文件名(存在文件名)&gt; newfilename(新名称)

  4. 注意:在unix服务器上找到所有java文件的命令下面的错误字符

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

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