Как сопоставить текст с новыми строками после слова с помощью bash

#regex #grep

Вопрос:

Мне нужно сопоставить конец файла после совпадения слов в bash. У меня есть такое сообщение:

 line 1
line 2
line 3
key line
line 5
line 6
 

Я притворяюсь, что получаю все после «ключевой строки», поэтому мой вывод будет:

 line 5
line 6
 

Как я могу сделать это с помощью bash?
Я пробовал grep -o -P '(?<=key linen)[sS]*' , но это не сработало, хотя это сработало при тестировании в https://regexr.com/

Ответ №1:

grep является линейным. Это плохо работает, когда вы хотите выполнять поиск по строкам.

sed готов к этой работе. Это приведет d к удалению всех строк от строки 1 до содержащей key line , оставляя только строки после нее:

 $ sed '1,/key line/d' test.txt
line 5
line 6