使用grep解析多行字符串的非贪婪模式

时间:2012-02-02 18:41:18

标签: regex grep regex-greedy

我有一个文件:

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 个答案:

答案 0 :(得分:2)

您可以尝试使用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