通常为了从文件中删除 ^M,我们会这样做
dos2unix test.txt test.txt
tr -d '\r' < old.file > new.file
但这种方法坚持创建新文件
如果我们不想创建另一个文件,那么解决方案是:example of perl oneliner
perl -pi -e 's/^M//g' file1
我在 Solaris 上尝试过,但由于不清楚的原因,^M 仍然存在于文件中?
请指教这里有什么问题
答案1
Perl\r
也需要 a。
perl -pi -e 's/^M//g' file1
^^ - should be \r
尽管实际上,你可能只是想要坚持行结尾。
perl -pi -e 's,\r\n,\n,g' file1
虽然实际上 - 你不需要 perl 来做到这一点。sed
完全有能力:
sed -i.bak -e 's,\r\n$,\n,g' file1
答案2
您需要使用\r
, 而不是^M
来匹配回车符。^M
已删除M
行开头的所有字符,因此您可能需要检查您的文件是否仍然正常...