使用 sed 修复损坏的换行符

Dav*_*ill 7 bash sed

我有一个装满文件的文件夹,每个文件都有数百行。其中许多文件偶尔会出现换行符中断:当我在 vim 中打开它们时,许多文件都在换行符所在的位置散布了 ^M^L。

在 vim 中,我可以运行%s/^M^L/\r/g这将纠正它们。但是,我不想对每个文件都这样做。

所以我试图通过 sed 在 bash 脚本中执行此操作,但没有奏效。我都试过:

sed 's/^M^L/\r/g' filename

sed 's/^M^L/\
/g' filename
Run Code Online (Sandbox Code Playgroud)

注意:每次^M^L出现在这里,我都做了ctrl-v ctrl-m,而不是shift-6 (^) M。

我究竟做错了什么?更重要的是,我需要做什么才能让它发挥作用?

Kar*_*son 4

您应该能够执行以下操作:

sed 's/\x0C//g`
Run Code Online (Sandbox Code Playgroud)

或者

sed 's/\x0D\x0C/\x0D/g'
Run Code Online (Sandbox Code Playgroud)

或者如果你使用 GNUsed

sed 's/\r\f/\r/'
Run Code Online (Sandbox Code Playgroud)