UNIX脚本追加^ M在每行的末尾(Unix script appends ^M at end of

2019-08-17 02:28发布

我有一个Unix shell脚本执行以下操作:

  1. 创建一个文件的备份
  2. 追加一些文本文件

现在,在#2,如果我插入一个文本,^ M被附加在文件中的所有行。

例如:

echo " a" >> /cust/vivek.txt
echo " b" >> /cust/vivek.txt

vi vivek.txt
abc^M
bcd^M
a^M
b^M

任何办法避免这种情况?

Answer 1:

我不知道怎么样echo可产^M字符,但您可以通过运行删除它们dos2unix上你的文件,如下所示:

dos2unix /cust/vivek.txt


Answer 2:

^M是一个回车,当文件从Windows拷贝是常见的。 使用:

od -xc filename

应该给一个什么样的文件看起来像一个低级别的列表。 如果你的文件并非来自Windows下,那么另一种可能性是,你的终端设置不正确翻译。 检查TERM环境变量是正确的。

如果该文件已经从Windows,然后使用dos2unixsed 's/\r//' file > file.new



Answer 3:

我怀疑这可能是你的VI设置的神器,而不是串联。

什么

cat -v -e filename

节目 ? 该命令将转储文件,并标记控制字符,所以很清楚什么在你的文件真的 。 又见这个超级用户的问题/答案集 。



Answer 4:

^ M是当它在Windows中使用该输入的文件中的元字符。

命令unix2dos可以解决这个问题。

dos2unix <filename>


Answer 5:

只要

sed -e "s/\r//g" file

工作对我来说



文章来源: Unix script appends ^M at end of each line
标签: bash shell unix