我有一个Unix shell脚本执行以下操作:
- 创建一个文件的备份
- 追加一些文本文件
现在,在#2,如果我插入一个文本,^ M被附加在文件中的所有行。
例如:
echo " a" >> /cust/vivek.txt
echo " b" >> /cust/vivek.txt
vi vivek.txt
abc^M
bcd^M
a^M
b^M
任何办法避免这种情况?
我有一个Unix shell脚本执行以下操作:
现在,在#2,如果我插入一个文本,^ M被附加在文件中的所有行。
例如:
echo " a" >> /cust/vivek.txt
echo " b" >> /cust/vivek.txt
vi vivek.txt
abc^M
bcd^M
a^M
b^M
任何办法避免这种情况?
我不知道怎么样echo
可产^M
字符,但您可以通过运行删除它们dos2unix
上你的文件,如下所示:
dos2unix /cust/vivek.txt
^M
是一个回车,当文件从Windows拷贝是常见的。 使用:
od -xc filename
应该给一个什么样的文件看起来像一个低级别的列表。 如果你的文件并非来自Windows下,那么另一种可能性是,你的终端设置不正确翻译。 检查TERM环境变量是正确的。
如果该文件已经从Windows,然后使用dos2unix
或sed 's/\r//' file > file.new
我怀疑这可能是你的VI设置的神器,而不是串联。
什么
cat -v -e filename
节目 ? 该命令将转储文件,并标记控制字符,所以很清楚什么在你的文件真的 。 又见这个超级用户的问题/答案集 。
^ M是当它在Windows中使用该输入的文件中的元字符。
命令unix2dos可以解决这个问题。
dos2unix <filename>
只要
sed -e "s/\r//g" file
工作对我来说