通过 perl 在同一文件上的一个衬垫从solaris中删除 ^M

mai*_*ash 2 bash solaris perl

通常是为了从我们所做的文件中删除 ^M

dos2unix test.txt test.txt

tr -d '\r' < old.file > new.file
Run Code Online (Sandbox Code Playgroud)

但这种方法坚持创建新文件

如果我们不想创建另一个文件,那么解决方案是:perl one liner 的示例

perl -pi -e 's/^M//g' file1
Run Code Online (Sandbox Code Playgroud)

我在 Solaris 上尝试过,但由于不清楚的原因,文件中仍然存在 ^M 吗?

请建议这里有什么问题

Sob*_*que 5

Perl 也需要一个\r

perl -pi -e 's/^M//g' file1
               ^^ - should be \r
Run Code Online (Sandbox Code Playgroud)

尽管实际上,您可能只想坚持使用行尾。

perl -pi -e 's,\r\n,\n,g' file1
Run Code Online (Sandbox Code Playgroud)

虽然实际上 - 你不需要为此使用 perl。sed完全有能力:

sed -i.bak -e 's,\r\n$,\n,g' file1
Run Code Online (Sandbox Code Playgroud)


wur*_*tel 5

您需要使用\r, 不^M匹配回车符。^M已删除M该行开头的所有字符,因此您可能需要检查您的文件是否仍然正常...