【发布时间】:2010-09-09 14:02:36
【问题描述】:
我想在 Linux 上使用 grep 搜索包含 DOS 行结尾的文件。像这样的:
grep -IUr --color '\r\n' .
以上内容似乎与文字 rn 匹配,这不是我们想要的。
this 的输出将通过 xargs 传递到 todos 中,像这样将 crlf 转换为 lf
grep -IUrl --color '^M' . | xargs -ifile fromdos 'file'
【问题讨论】:
-
你试过dos2unix吗?它会自动修复行尾。
-
我不太确定,但 iirc 在 ' 和 " 中引用模式是有区别的。在 ' 中包含的模式中的 Afaik 转义序列被解释为正确的字符串,因此 '\r' 将是等效的到 "\\r" 和 "\r" 与 '. 没有等价物(至少在该符号中)
-
Anticom:在这种情况下,您是正确的,' 和 " 之间的区别无关紧要;但是,通常它们是不同的,因为 ' 包围的字符串是弱引用的,而 " 是强引用的。我利用的最大优势是 $ 扩展或 `` 不要在弱引用字符串中扩展。请参阅bash-hackers on quoting 了解更多信息。
-
最简单的方法是使用现代
dos2unix和-ic开关。对于 LF 文件,您可以使用 unix2dos-ic进行搜索。它不会修改文件。仅报告。 -
因为这是有关 Linux 上 Windows 行尾/回车的任何问题的最佳答案,我认为值得注意的是,您可以在终端中使用命令查看它们
cat -v somefile.txt;他们显示为^M