Использование Bash Script для поиска номера строки строки в файле

Как я могу использовать bash script, чтобы найти номер строки, где встречается строка?

Например, если файл выглядел так,

Hello I am Isaiah
This is a line of text.
This is another line of text.

и я запустил script, чтобы найти строку "строка", которая выведет номер 2, так как это первый случай.

Ответы

Ответ 1

Учитывая, что ваш пример печатает только номер строки первого вхождения строки, возможно, вы ищете:

awk '/line/{ print NR; exit }' input-file

Если вы действительно хотите все вхождения (например, если желаемый результат вашего примера на самом деле "2\n3\n" ), опустите exit.

Ответ 2

Мне нравится комментарий Сиддхартхи к OP. Почему он не опубликовал его, так как ответ уходит от меня.

Обычно я просто хочу, чтобы номер строки первой строки показывал, что я ищу.

lineNum="$(grep -n "needle" haystack.txt | head -n 1 | cut -d: -f1)"

Объяснение: после grep, возьмите только первую строку (num: line), вырежьте двоеточием d и возьмите сначала f ield