我使用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'
还有一个问题是,我们如何得到不等于模式的结果。 像所有文件一样,但不是那些有特定字符串的文件?
#1楼
如果您只想要行号,请执行以下操作:
grep -nr Pattern file.ext | gawk '{print $1}' FS=":"
例:
$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":"
48793
52285
54023
#2楼
行号用grep -n
打印:
grep -n pattern file.txt
要仅获取行号(没有匹配的行),可以使用cut
:
grep -n pattern file.txt | cut -d : -f 1
不包含模式的行使用grep -v
打印:
grep -v pattern file.txt
#3楼
grep -A20 -B20 pattern file.txt
搜索模式并在模式之前和之前显示20行
#4楼
grep -nr SEARCHTERM file1 file2 ...
#5楼
grep -nr“搜索字符串”目录
这为您提供了行号。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3195252