首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Linux上如何使用grep搜索包含DOS行结尾(CRLF)的文件?

在Linux上如何使用grep搜索包含DOS行结尾(CRLF)的文件?
EN

Stack Overflow用户
提问于 2008-09-16 15:50:59
回答 6查看 106.4K关注 0票数 147

我想在Linux上搜索包含带有grep的DOS行结尾的文件。如下所示:

代码语言:javascript
复制
grep -IUr --color '\r\n' .

上面的内容似乎与文字rn相匹配,而这并不是我们所希望的。

它的输出将通过管道通过xargs转换为todos,以便将crlf转换为lf,如下所示

代码语言:javascript
复制
grep -IUrl --color '^M' . | xargs -ifile fromdos 'file'
EN

回答 6

Stack Overflow用户

发布于 2008-09-16 16:03:29

grep可能不是您想要的工具。它将为每个文件中的每个匹配行打印一行。除非您想在一个10行的文件上运行10次todos,否则grep不是最好的方法。使用find在树中的每个文件上运行file,然后浏览"CRLF“将为每个具有dos样式行结尾的文件得到一行输出:

代码语言:javascript
复制
find . -not -type d -exec file "{}" ";" | grep CRLF

将会给你带来一些类似的东西:

代码语言:javascript
复制
./1/dos1.txt: ASCII text, with CRLF line terminators
./2/dos2.txt: ASCII text, with CRLF line terminators
./dos.txt: ASCII text, with CRLF line terminators
票数 190
EN

Stack Overflow用户

发布于 2012-11-30 18:20:28

使用RipGrep (根据您的shell,您可能需要引用最后一个参数):

代码语言:javascript
复制
rg -l \r
代码语言:javascript
复制
-l, --files-with-matches
Only print the paths with at least one match.

https://github.com/BurntSushi/ripgrep

票数 62
EN

Stack Overflow用户

发布于 2010-07-06 15:53:28

代码语言:javascript
复制
# list files containing dos line endings (CRLF)

cr="$(printf "\r")"    # alternative to ctrl-V ctrl-M

grep -Ilsr "${cr}$" . 

grep -Ilsr $'\r$' .   # yet another & even shorter alternative
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档