我有一个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
有什么方法可以避免这种情况吗?
答案 0 :(得分:13)
我不确定echo
如何生成^M
个字符,但您可以通过在文件上运行dos2unix
来删除它们,如下所示:
dos2unix /cust/vivek.txt
答案 1 :(得分:4)
^M
是回车符,通常在从Windows复制文件时看到。使用:
od -xc filename
应该提供文件外观的低级列表。如果您的文件不是来自Windows,则另一种可能是您的终端设置未正确翻译。检查TERM环境变量是否正确。
如果文件来自Windows,请使用dos2unix
或sed 's/\r//' file > file.new
答案 2 :(得分:2)
我怀疑这可能是你的vi设置的一个神器,而不是连接。
什么是
cat -v -e filename
显示?此命令将转储您的文件并标记控制字符,以便清楚文件中的真正。另请参阅this Superuser question/answer set。
答案 3 :(得分:2)
^ M是在Windows中使用时输入文件的元字符。
dos2unix命令可以解决此问题。
dos2unix <filename>
答案 4 :(得分:1)
仅
sed -e "s/\r//g" file
为我工作
答案 5 :(得分:0)
如果使用的是Windows,则可以在将文件加载到服务器之前,使用notepad ++并尝试“编辑”>“ EOL转换”>“ Unix / OSX格式”。