Нежадный режим разбора многострочной строки с помощью grep - PullRequest
1 голос
/ 02 февраля 2012

У меня есть файл:

bla bla bla
bla bla bla
a rs1
a rs2
a rs3
b rs4
b rs5
b rs6
bla bla bla
bla bla bla

, где rsN - случайный материал.

Я пытаюсь получить последнюю строку с a и первую строку с b :

a rs3
b rs4

с:

> grep -Po "(?s)^a.*?$.*?^b.*?$" test.regexp
a rs1
a rs2
a rs3
b rs4

но, видимо, я что-то упускаю.

спасибо.

1 Ответ

2 голосов
/ 02 февраля 2012

Здесь вы можете попробовать awk.

awk '$1=="a"{a=$0;next}$1=="b"{print a; print $0;exit}' file

Тест:

[jaypal:~/Temp] cat file
bla bla bla
bla bla bla
a rs1
a rs2
a rs3
b rs4
b rs5
b rs6
bla bla bla
bla bla bla
[jaypal:~/Temp] awk '$1=="a"{a=$0;next}$1=="b"{print a; print $0;exit}' file
a rs3
b rs4
...