选定行中的 Grep 模式

选定行中的 Grep 模式

pattern 1仅当下一行包含pattern 2并以 开头时,如何保留行包含pattern 3

示例:A仅当下一行以 a 开头B且包含模式时,才保留以 an 开头的行B1

输入文件

A   item1A
B   item1B2
A   item2A
A   item3A
B   item3B1
B   item3CB1
B   item3B2
A   item5A
B   item5B1
A   item6A

预期输出:

A   item3A
B   item3B1
B   item3CB1
A   item5A
B   item5B1

(我目前正在尝试,grep -e ^A -e B1但副作用是所有As 行都被保留)

答案1

pcregrep

pcregrep -M '^(A.*\n)?B.*B1'

awk

awk '
  /^B.*B1/ {if (p && last ~ /^A/) print last; print; p=0; next}
  {p=1; last=$0}'

相关内容