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
但副作用是所有A
s 行都被保留)
答案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}'