首页 文章

Grep列表文件名和行号

提问于
浏览
67

嗨,我正在尝试使用grep搜索我的rails目录 . 我正在寻找一个特定的单词,我想grep打印出文件名和行号 . 有一个grep标志会为我做这个吗?我一直在尝试使用-n和-l的组合,但这些都是打印出没有数字的文件名,或者只是将大量文本转储到终端,这些文本无法轻易读取 .

例如:

grep -ln "search" *

我需要将它管道输入awk吗?

3 回答

  • 25

    我认为 -l 限制性太强,因为它抑制了 -n 的输出 . 我建议 -H--with-filename ):打印每场比赛的文件名 .

    grep -Hn "search" *
    

    如果输出太多,请尝试 -o 仅打印匹配的部分 .

    grep -nHo "search" *
    
  • 8
    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
    
  • 101

    我喜欢用:

    grep -niro 'searchstring' <path>

    但由于某种原因,'s just because I always forget the other ways and I can'忘了 Robert de grep - niro

相关问题