Найдите номер строки, где появляется определенное слово с символом "grep"
Может ли grep
указать номер строки, на которой отображается указанное слово?
Кроме того, можно использовать grep
для поиска слова, начинающегося с некоторой определенной строки вниз?
Ответы
Ответ 1
Используйте grep -n
, чтобы получить номер строки соответствия.
Я не думаю, что есть способ заставить grep начать с определенного номера строки. Для этого используйте sed. Например, чтобы начать с строки 10 и напечатать номер строки и строку для соответствующих строк, используйте:
sed -n '10,$ { /regex/ { =; p; } }' file
Чтобы получить только номера строк, вы можете использовать
grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/'
Или вы можете просто использовать sed:
sed -n '/regex/=' file
Объединяя две команды sed, вы получаете:
sed -n '10,$ { /regex/= }' file
Ответ 2
Вы можете вызвать tail +[line number] [file]
и передать его на grep -n
, который показывает номер строки:
tail +[line number] [file] | grep -n /regex/
Единственная проблема с этим методом - номера строк, сообщенные grep -n
, будут [line number] - 1
меньше фактического номера строки в [file]
.
Ответ 3
Или Вы можете использовать
grep -n . file1 |tail -LineNumberToStartWith|grep regEx
Это позаботится о нумерации строк в файле
grep -n . file1
Это будет печатать последний-LineNumberToStartWith
tail -LineNumberToStartWith
И, наконец, grep ваши желаемые строки (которые будут содержать номер строки, как в файле orignal)
grep regEX