首页 文章

使用grep时获取行号

提问于
浏览
298

我使用grep递归来搜索文件中的字符串,所有匹配的文件和包含该字符串的行都在终端上打印 . 但是有可能获得这些线的行号吗?

例如:我现在获得的是 /var/www/file.php: $options = "this.target" ,但我想要获得的是 /var/www/file.php: 1142 $options = "this.target"; ,其中 1142 将是包含该字符串的行号 .

我用来递归grep的语法是 sudo grep -r 'pattern' '/var/www/file.php'

还有一个问题是,我们如何得到不等于模式的结果 . 像所有文件一样,但不是那些有特定字符串的文件?

6 回答

  • 125
    grep -nr SEARCHTERM file1 file2 ...
    
  • 23

    行号用 grep -n 打印:

    grep -n pattern file.txt
    

    要仅获取行号(没有匹配的行),可以使用 cut

    grep -n pattern file.txt | cut -d : -f 1
    

    不包含图案的线条打印为 grep -v

    grep -v pattern file.txt
    
  • 5

    如果您只想要行号,请执行以下操作:

    grep -nr Pattern file.ext | gawk '{print $1}' FS=":"
    

    例:

    $ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
    48793
    52285
    54023
    
  • 472
    grep -A20 -B20 pattern file.txt
    

    搜索模式并在模式之前和之前显示20行

  • 0

    grep -nr "search string" directory

    这为您提供了行号 .

  • 0

    要使用行号显示结果,您可以尝试这样做

    grep "word to search for" /path/to/file/file -nr
    

    结果应该是这样的:

    linenumber: data data data word to search for data data
    

相关问题