Ленивое совпадение в unix bash сценарии оболочки - PullRequest
3 голосов
/ 17 января 2020

Я новичок в сценариях оболочки и командах unix и пытаюсь найти хороший способ выполнить ленивое сопоставление между шаблонами в файле и не смог получить вывод, который я хочу увидеть. Текст выглядит следующим образом (Редактировать: исправленная текстовая строка

"hello
how
are
you
right
now
and
hey how
you
doing
thanks
see
you
and
ask
me if I
am
doing
okay"

Желаемый результат:

hey how
you
doing

Я пытался использовать несколько ответов, которые я нашел здесь, для похожих проблем, связанных с sed, grep или awk, и я продолжаю видеть этот вывод вместо:

how
are
you
right
now
and
hey how
you
doing
thanks
see
you
and
ask
me if I
am
doing

Я просто хочу выполнить ленивое совпадение между словами «как» и «делать» и распечатать строки между (включительно) (и желательно как использовать решение для присвоения возвращаемого текста переменной в сценарии оболочки)

Заранее спасибо

Редактировать

1 Ответ

2 голосов
/ 17 января 2020

Я просто хочу выполнить ленивое соответствие между словами «как» и «делать» и напечатать строки между

Вы можете использовать это awk:

awk 'p{s = s ORS $0} /how$/{p=1; s=$0} p && /doing$/{print s; p=0}' file

hey how
you
doing
...