标签: regex bash awk grep
如何匹配某个号码匹配前的最后一次foo?
foo
foo: A 1 2 foo: B 1 foo: C 2
搜索模式2应返回:
2
foo: A foo: C
答案 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