Grep列表文件名和行号
您好,我正在尝试使用grep来搜索我的rails目录。 我正在寻找一个特定的词,我想grep打印出文件名和行号。 有没有grep的国旗会为我做这件事? 我一直试图使用-n和-l的组合,但是它们要么打印出没有数字的文件名,要么只是将大量文本扔到终端,这些文本不容易被读取。
例如:
grep -ln "search" *
我需要将它管到awk吗?
我认为-l
限制性太强,因为它会抑制-n
的输出。 我会建议-H
(-- --with-filename
):打印每个比赛的文件名。
grep -Hn "search" *
如果输出太多,请尝试-o
仅打印匹配的部分。
grep -nHo "search" *
grep -rin searchstring * | cut -d: -f1-2
这就是说,递归搜索(用于字符串searchstring
在这个例子中),忽略大小写,并显示行号。 该grep的输出将如下所示:
/path/to/result/file.name:100: Line in file where 'searchstring' is found.
接下来,我们使用冒号将结果传递给cut命令:
作为字段分隔符并显示字段1到2。
当我不需要行号时,我经常使用-f1
(只是文件名和路径),然后将输出传递给uniq
,这样我只能看到每个文件名一次:
grep -ir searchstring * | cut -d: -f1 | uniq
我喜欢使用:
grep -niro 'searchstring' <path>
但那只是因为我总是忘记其他方式,出于某种原因,我不能忘记罗伯特德格雷普grep -
尼罗 。