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?
6 answers
grep -nr SEARCHTERM file1 file2 ...
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
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
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
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.
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
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