Найдите номер строки, где появляется определенное слово с символом "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].