Grep列表文件名和行号
您好我正在尝试使用grepsearch我的rails目录。 我正在寻找一个特定的单词,我想grep打印出文件名和行号。 有一个grep的标志,将为我做这个? 我一直在尝试使用-n和-l的组合,但是这些都是打印没有数字的文件名,或者只是倾倒出大量的文本到terminal,这是不容易阅读。
例如:
grep -ln "search" *
我是否需要将它连接到awk?
我认为-l
限制性太强,因为它会抑制-n
的输出。 我会build议-H
(– --with-filename
):打印每个匹配的文件名。
grep -Hn "search" *
如果输出太多,请尝试-o
仅打印匹配的部分。
grep -nHo "search" *
grep -rin searchstring * | cut -d":" -f1-2
这就是说,recursionsearch(在本例中为string“searchstring”),忽略大小写,并显示行号。 该grep的输出将如下所示:
/path/to/result/file.name:100: Line in file where 'searchstring' is found.
接下来,我们使用冒号“:”作为字段分隔符将该结果input到cut命令,并显示字段1到2。
当我不需要行号时,我经常使用-f1
(只是文件名和path)。 然后pipe它到uniq,所以我只看到每个文件名一次像这样:
grep -ir searchstring * | cut -d":" -f1 | uniq
我喜欢使用:
grep -niro 'searchstring' <path>
但那只是因为我总是忘记其他的方式,我不能忘记罗伯特德grep -
尼罗出于某种原因:)