Предположим, у меня есть файл с именем 'test.txt'
:
>reference1
fooHappybar
>reference2
fooBirthdaybar
Мне нужна команда grep, которая захватит строку между foo
и bar
и строку непосредственно над совпадением. Команда должна привести к следующему выводу:
>reference1
Happy
>reference2
Birthday
Вот что у меня есть:
grep -oP 'foo\K\w+(?=bar)' test.txt
, что дает:
Happy
Birthday
Я знаю, что grep -B 1
выводит совпадение и строку перед совпадением. Я попробовал:
grep -oP -B 1 'foo\K\w+(?=bar)' test.txt
Но это не работает.
Любое руководство приветствуется.
EDIT:
Как изменилась бы команда awk
, если бы у меня был этот файл?
>reference1
AGTCTGCAFOOHAPPYBARGTACAC
>reference2
GTACAFOOBIRTHDAYBARGACCAT
ожидаемый результат:
>reference1
HAPPY
>reference2
BIRTHDAY