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