匹配上一次匹配前的最后一次匹配

时间:2014-02-05 19:31:20

标签: regex bash awk grep

如何匹配某个号码匹配前的最后一次foo

foo: A
  1
  2
foo: B
  1
foo: C
  2

搜索模式2应返回:

foo: A
foo: C

2 个答案:

答案 0 :(得分:4)

使用awk:

awk -v s='2' '/^foo:/{line=$0;next} $1==s{print line}' file
foo: A
foo: C

答案 1 :(得分:0)

这个正则表达式绝对可以使用一些优化,但它应该可以工作:

foo: [A-Z](?=(?:(?!foo)[^2])*2)

示范:http://regex101.com/r/cX8gM0