Абсолютный новичок здесь, пытаясь понять это. Довольно простая задача, но я не смог найти правильное решение. Я узнал, что grep идеально подходит для этого, но у этой проблемы есть достаточно переменных, которые мое основное понимание не может понять.Печатать строки до или после ключевых слов
У меня есть текстовый файл и вы хотите печатать строки до или после определенных ключевых слов.
Пример:
Входной
Alpha
textfoo
text
text
qux
Beta
text
Charlie
textbar
text
text
qux
Delta
text
text
Echo
textbaz
text
text
text
qux
Foxtrot
Я хочу напечатать строки 'Foo' , прежде чем ключевые слова 'бар' и 'Баз' и после ключевого слова 'QUX'. Однако «foo» «bar» и «baz» прикрепляются к тексту без пробела, подобного примеру. Желаемый результат в следующем порядке:
Выход
Alpha
Beta
Charlie
Delta
Echo
Foxtrot
Запуск OSX так не GNU Grep :(
Только узнал о заваривать и установленной GNU Grep :), так что это вариант в настоящее время. Спасибо за помощь! Я действительно в недоумении.
Решение:
awk 'n {print;n=0} /qux/ {n=1;next} /foo/ {print f} {f=$0} /bar/ {print g} {g=$0} /baz/ {print h} {h=$0}' file
Вы можете проверить '-B' и' -a' варианты 'grep'. –