我有一个从windows生成的文件,我必须将其粘贴到linux下的脚本中。 我的脚本运行正常,除了在每一行的末尾我得到了一个^ M char。
如何用bash删除它?
目前我的脚本是:
#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
echo $CUSTOMER
done
答案 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
dos2unix file_name
:%s/ctrl+v ctrl+m//g
这将删除所有错误
来自你的文件。现在使用:wq
进行保存并退出 sed -e "s/^M//" filename(exist file name) > newfilename(new name)
sed -e“s / ^ M //”文件名(存在文件名)&gt; newfilename(新名称)
注意:在unix服务器上找到所有java文件的命令下面的错误字符
find . -name "*.java*" -type f | xargs grep -l ^M *
同样,您可以对所有类型的文件使用"*.*"
而不是"*.java"