2010-07-09 34 views
262

我正在使用grep遞歸來搜索文件中的字符串,並且所有匹配的文件和包含該字符串的行都在終端上打印。但是有可能獲得這些行的行號嗎?在使用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'

還有一個問題是,我們怎樣才能不結果等於模式。像所有的文件,但不是有一定的字符串?

+0

-v標誌將顯示不匹配的行(grep -v myText MyFile.txt) – bcarroll 2014-04-24 13:08:55

回答

405
grep -nr SEARCHTERM file1 file2 ... 
+0

我有另一個快速問題,我們如何得到不等於模式的結果。像所有的文件,但不是有一定的字符串? – sai 2010-07-09 15:23:28

+4

這將是命令行開關-v。 如果您運行'grep --help',它將顯示所有選項 – 2010-07-09 16:05:54

+25

如果您指定了多個文件,則不需要'-r'。如果您指定目錄,則只需要'-r'。 – Sparhawk 2015-10-21 10:10:33

19

如果你只想要行號做:

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

例子:

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

'awk的-F: '{print $ 1}''也可以,當在文件上使用時,'grep'中不需要'-r'(只能遞歸搜索目錄) – 2017-09-19 22:49:19

109

行號都印有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

最後一個匹配的行號:'grep -n pattern file.txt | cut -d:-f 1 | tail -1'(你可以把它保存到一個變量中,然後用它來例如尾部文件) – Nux 2014-05-07 14:08:48

3
grep -A20 -B20 pattern file.txt 

搜索模式和顯示20行之後並圖案

之前
+6

這並不是所要求的。 – 2015-07-27 12:25:35

+0

另外,'-C20'是一個更短的版本,如果這是通緝 – 2017-10-03 23:36:19

0

grep -nr「search string」directory

這給你行號的行號。