У меня возникли трудности с захватом нескольких строк из текстового файла. Например, скажем, у меня есть следующий текст в файле:
A I have a cat
B I have a dog
C I have a mouse
X I have a monkey
B I have a rat
T I have a cat
C I have a deer
X I have a turkey
Я пытаюсь найти все строки, содержащие слово «кошка», и если в предложении есть «А» в качестве первой буквы, я хотел бы получить следующие несколько строк (включая строку, которая соответствует шаблону «кошка») пока я не встречаю букву «X» как первую букву строки.
Так, например, приведенный выше текстовый файл должен распечатать:
A I have a cat
B I have a dog
C I have a mouse
(распечатывает, пока не увидит X)
Примечание. Строка «У меня есть кошка» не должна совпадать, потому что, хотя в ней есть кошка, она не начинается с буквы «А».
Я попытался найти справку, но ничего не смог найти в распечатке строк, пока не будет сопоставлен определенный шаблон. Самое близкое, что я мог найти, было
awk '/cat/ {for(i=0; i<=5; i++) {getline; print}}' filename
но это выводит определенное количество строк. Я хочу, чтобы он распечатывался, пока не увидит следующий шаблон, который является "X"
sed
способ выборочной печати:sed -n '/^A.*cat/,/^X/{/^X/!p}' file
21.04.2016