我有一个从 Windows 生成的文件,我必须将其粘贴到 linux 下的脚本中。我的脚本工作正常,除了在每一行的末尾我得到一个 ^M 字符。
如何使用 bash 删除它?
目前我的脚本是:
#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
echo $CUSTOMER
done
^M 应该是 windows 换行符 \r,因此您只需删除所有 \r 您可以使用 tr 工具来实现这一点,您可以从 bash 脚本中调用该工具,这是来自维基百科文章(我没有验证它):
tr -d '\r' < inputfile > outputfile
因此,从 bash 它应该类似于
VAR=`echo -n $CUSTOMER | tr -d '\r'`
在进一步处理之前 调用dos2unix 。exp.csv
我经常使用tr
. CR 字符是八进制的 013:
tr -d '\013' < $FILE
所以在你的循环中,那就是
for CUSTOMER in `tr -d '\013' < exp.csv`
文件上的 dos2unix 命令
有几种方法可以char M
从文件中删除错误
使用命令dos2unix file_name
在 vi 编辑器中打开文件,进入命令模式并键入:%s/ctrl+v ctrl+m//g
这将从文件中删除所有坏字符。现在:wq
用于保存和退出
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"
所有类型的文件