Uzyskaj numer linii podczas korzystania z grep

Używam rekurencyjnego grepa do przeszukiwania plików w poszukiwaniu ciągu znaków, a wszystkie dopasowane pliki i linie zawierające ten ciąg są drukowane na terminalu. Ale czy jest możliwe, aby uzyskać numery linii tych linii też??

Ex: obecnie to, co dostaję, to /var/www/file.php: $options = "this.target", ale to, co próbuję uzyskać, to /var/www/file.php: 1142 $options = "this.target";, cóż, gdzie 1142 byłby numer linii zawierający ten ciąg.

Składnia, której używam do rekurencyjnego grep jest sudo grep -r 'pattern' '/var/www/file.php'

Jeszcze jedno pytanie, Jak uzyskać wyniki za nie równe wzór. Jak wszystkie pliki, ale nie te, które mają określony ciąg znaków?

Author: Cœur, 2010-07-09

6 answers

grep -nr SEARCHTERM file1 file2 ...
 462
Author: Miro A.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-28 05:52:58

Numery linii są drukowane za pomocą grep -n:

grep -n pattern file.txt

Aby uzyskać tylko numer linii (bez pasującego wiersza), można użyć cut:

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

Linie nie zawierające wzorzec są drukowane za pomocą grep -v:

grep -v pattern file.txt
 123
Author: carlito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 18:36:58

Jeśli chcesz tylko numer linii zrób to:

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

Przykład:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023
 23
Author: Cloud Falls,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-27 20:36:51
grep -A20 -B20 pattern file.txt

Wyszukaj wzorzec i pokaż 20 linii PO i przed wzorzec

 5
Author: emilio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-30 08:09:25

Katalog Grep-nr "search string"

To daje linię z numerem linii.

 0
Author: Dhinakaran Kannan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 09:17:35

Aby wyświetlić wyniki z numerami linii, możesz spróbować tego

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

Wynik powinien wyglądać mniej więcej tak:

linenumber: data data data word to search for data data
 0
Author: Fouad Djebbar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-28 16:40:56