使用grep时获取行号

时间:2010-07-09 14:49:27

标签: printing grep line

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

ex:目前我得到的是/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 个答案:

答案 0 :(得分:491)

grep -nr SEARCHTERM file1 file2 ...

答案 1 :(得分:133)

行号用grep -n打印:

grep -n pattern file.txt

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

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

包含图案的行打印有grep -v

grep -v pattern file.txt

答案 2 :(得分:23)

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

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

示例:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023

答案 3 :(得分:6)

grep -A20 -B20 pattern file.txt

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

答案 4 :(得分:-1)

grep -nr“搜索字符串”目录

这为您提供了行号。

答案 5 :(得分:-1)

为了使用行号显示结果,您可以尝试使用

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

结果应该是这样的:

linenumber: other data "word to search for" other data