在同一文件上通过 Perl Oneliner 从Solaris 中删除 ^M

在同一文件上通过 Perl Oneliner 从Solaris 中删除 ^M

通常为了从文件中删除 ^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行开头的所有字符,因此您可能需要检查您的文件是否仍然正常...

相关内容