Regex 匹配上一次匹配之前的最后一次匹配
在匹配某个数字之前,如何匹配上次出现的Regex 匹配上一次匹配之前的最后一次匹配,regex,bash,awk,grep,Regex,Bash,Awk,Grep,在匹配某个数字之前,如何匹配上次出现的foo foo: A 1 2 foo: B 1 foo: C 2 搜索模式2应返回: foo: A foo: C 使用awk: awk -v s='2' '/^foo:/{line=$0;next} $1==s{print line}' file foo: A foo: C 这个正则表达式当然可以使用一些优化,但它应该可以工作: foo: [A-Z](?=(?:(?!foo)[^2])*2) 演示:+1但你不应该使用字母l作为变量,因
foo
foo: A
1
2
foo: B
1
foo: C
2
搜索模式2
应返回:
foo: A
foo: C
使用awk:
awk -v s='2' '/^foo:/{line=$0;next} $1==s{print line}' file
foo: A
foo: C
这个正则表达式当然可以使用一些优化,但它应该可以工作:
foo: [A-Z](?=(?:(?!foo)[^2])*2)
演示:+1但你不应该使用字母
l
作为变量,因为它看起来太像数字1
,在某些字体中完全无法区分。为了确保可读性,我不得不将其复制并粘贴到谷歌。建议使用得当,将l
更改为line
。