Поиск строки в файле и вывод номера строки - PullRequest
2 голосов
/ 28 мая 2011
awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file

с этим я могу получить строку перед строкой найденной строки.
Как я могу напечатать его номер строки?

Ответы [ 4 ]

4 голосов
/ 28 мая 2011

Используйте NR, чтобы получить номер текущей строки (записи):

awk '$0 ~ str{print NR-1 FS b}{b=$0}' str="findme" path_to_file
3 голосов
/ 29 мая 2011

Если я правильно интерпретирую вопрос, и вы просто хотите напечатать номер строки, которая предшествует любой строке, содержащей данную строку, вы можете сделать:

$ awk '/findme/{print NR - 1}' /path/to/file
1 голос
/ 28 мая 2011

Вот решение:

awk '$0 ~ str{print b;print}{b=$0}' str="findme" path_to_file

Или, если вы не возражаете, немного другой вывод, в котором есть '-', разделяющие группы найденных строк:

grep -B1 findme path_to_file

В этом случае вы ищете строку «findme» в файле «path_to_file».Флаг -B1 гласит: «также печатает 1 строку перед этим».

0 голосов
/ 28 мая 2011

вы можете использовать echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...