关于打印:使用grep时获取行号

Get line number while using grep

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

例:目前我得到的是/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'

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


1
grep -nr SEARCHTERM file1 file2 ...


行号用grep -n打印:

1
grep -n pattern file.txt

要仅获取行号(不带匹配行),可以使用cut

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

不含图案的线条用grep -v打印:

1
grep -v pattern file.txt


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

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

例子:

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


1
grep -A20 -B20 pattern file.txt

搜索模式并在模式前后显示20行


为了用行号显示结果,您可以尝试此操作

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

结果应该是这样的:

1
linenumber: data data data word to search for data data

grep-nr"search string"目录

这会给你一行的行号。