grep 查找包含 ^M 的文件 当 ^m dos2unix 和 sed 或“grep -r $'\r' *”不起作用

grep 查找包含 ^M 的文件 当 ^m dos2unix 和 sed 或“grep -r $'\r' *”不起作用

我使用 Cygwin 并使用 Perl 脚本创建了一个 txt 文件。

添加了 ^M(Windows 回车符),但我不知道如何添加。

当正常方法(^m dos2unix 和 sed 或“grep -r $'\r' *”)不起作用时,如何找到 ^M?

当使用较少的 file01 时,我可以看到 ^M,但无法将其与任何东西匹配(无论是 \r 还是 ^V^M)。

当使用 Col (参见 man col) 时,我摆脱了它和其他一些东西(我得到了一个非常非常奇怪的输出)

正常输出:

JAN131005 GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278 // GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278 ^M // GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278 ^M // GO:0003964 // GO:0003723 // GO:0006278 // GO:0005488 // GO:0003676 ^M // GO:0005622 // GO:0000166 // GO:0005886 // GO:0006950 // GO:0009628 // GO:0009719 // GO:0005515 // GO:0006950 // GO:0005515 // GO:0006950 // GO:0003674 // GO:0008150 // GO:0003676 ^M // GO:0003676 ^M // GO:0003964 // GO:0003723 // GO:0006278 // GO:0005488 // GO:0003676

在“col <file01>test01”之后,less test01 给出:

J//1GO:0003964//OGO:0003723///OGO:0006278///OGO:0005488///OGO:0003676///OGO:0009719///OGO:0005515///OGO:0006950///OGO:0005515///OGO:0006950///OGO:0003674///OGO:0008150///OGO:0003676// GO:0009055// GO:0020037// GO:0003723// GO:0006468// GO:0016023// GO:0003676// GO:0003964//前往:0005515 // 前往:0004672 // 前往:0000166 // 前往:0004497 // 前往:0006278

正如您所见,我已经消除了问题,并用另外 2 个替换了它...有人可以解释一下这里删除了什么 col 以及如何删除,以及我应该如何删除它才能删除 ^M?

答案1

问题是 \r 不起作用,请改用 \015:

tr -d "\015" <输入文件>输出文件

由于某种原因,当 \r 等不起作用时,\015 (八进制文字)起作用。

相关内容