Ответ 1
grep -nr SEARCHTERM file1 file2 ...
Я использую 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'
Еще один вопрос: как получить результаты, не равные шаблону. Как и все файлы, но не те, которые имеют определенную строку?
grep -nr SEARCHTERM file1 file2 ...
Номера строк печатаются с помощью grep -n
:
grep -n pattern file.txt
Чтобы получить только номер строки (без соответствующей строки), можно использовать cut
:
grep -n pattern file.txt | cut -d : -f 1
Строки, не содержащие шаблон, печатаются с помощью grep -v
:
grep -v pattern file.txt
Если вы хотите только номер строки, выполните следующие действия:
grep -nr Pattern file.ext | gawk '{print $1}' FS=":"
Пример:
$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":"
48793
52285
54023
grep -A20 -B20 pattern file.txt
Найдите шаблон и покажите 20 строк после и перед шаблоном
grep -nr "строка поиска"
Это дает вам строку с номером строки.
Чтобы отобразить результаты с номерами строк, вы можете попробовать это
grep -nr "word to search for" /path/to/file/file
Результат должен быть примерно таким:
linenumber: other data "word to search for" other data