Получить номер строки при использовании grep

Я использую grep recursive для поиска файлов для строки, и все сопоставленные файлы и строки, содержащие эту строку, печатаются на терминале. Но возможно ли получить номера строк этих строк?

ex: теперь я получаю /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 ...

Ответ 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 -nr Pattern file.ext | gawk '{print $1}' FS=":"

Пример:

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

Ответ 4

grep -A20 -B20 pattern file.txt

Найдите шаблон и покажите 20 строк после и перед шаблоном

Ответ 5

grep -nr "строка поиска"

Это дает вам строку с номером строки.

Ответ 6

Чтобы отобразить результаты с номерами строк, вы можете попробовать это

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

Результат должен быть примерно таким:

linenumber: other data "word to search for" other data