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

Chr*_*eta 5 regex bash awk grep

如何foo匹配某个数字匹配前的最后一次出现?

foo: A
  1
  2
foo: B
  1
foo: C
  2
Run Code Online (Sandbox Code Playgroud)

搜索模式2应该返回:

foo: A
foo: C
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 4

使用 awk:

awk -v s='2' '/^foo:/{line=$0;next} $1==s{print line}' file
foo: A
foo: C
Run Code Online (Sandbox Code Playgroud)