Unix脚本在每行的末尾追加^ M.

Viv*_*yer 10 unix bash shell

我有一个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
Run Code Online (Sandbox Code Playgroud)

有什么办法可以避免这个吗

dog*_*ane 13

我不确定如何echo生成^M字符但你可以通过运行dos2unix你的文件来删除它们,如下所示:

dos2unix /cust/vivek.txt
Run Code Online (Sandbox Code Playgroud)

  • `echo -e"\ r"`产生这样的 (2认同)

Pav*_*zka 7

仅有的

sed -e "s/\r//g" file
Run Code Online (Sandbox Code Playgroud)

为我工作


cda*_*rke 6

^M是回车符,通常在从 Windows 复制文件时出现。用:

od -xc filename
Run Code Online (Sandbox Code Playgroud)

这应该给出您的文件的外观的低级列表。如果您的文件不是来自 Windows,那么另一种可能是您的终端设置没有正确翻译。检查 TERM 环境变量是否正确。

如果文件来自 Windows,则使用dos2unixsed 's/\r//' file > file.new