Sed 如何找到特定的线时,它击中了一个特定的模式

Sed 如何找到特定的线时,它击中了一个特定的模式,sed,awk,grep,Sed,Awk,Grep,每当它看到一种模式;和abc[0]我需要打印第一行之后;以及包含abc[0]的行 我有类似的东西 blah blah; blah blah blah; xyz blah blah, blah blah abc[2] abc[1], abc[0] blah blah, blah blah abc[1], abc[0] blah blah blah blah; pqr blah blah blah blah blah abc[0] 所需输出如下所示 xyz blah blah, abc[0] pq

每当它看到一种模式;和abc[0]我需要打印第一行之后;以及包含abc[0]的行

我有类似的东西

blah blah;
blah blah blah;
xyz blah blah,
blah blah
abc[2]
abc[1],
abc[0]
blah blah,
blah blah
abc[1],
abc[0]
blah blah
blah blah;
pqr blah blah
blah blah blah
abc[0]
所需输出如下所示

xyz blah blah,
abc[0]
pqr blah blah
abc[0]
谢谢

awk '/;/ { f=1; next } f{ print $0 ; f=0; next} /abc\[0\]/ { print }' inputfile
解释: 使用GNU Grep 通过将问题的输入存储为/tmp/corpus,下面将通过过滤掉上下文行来提供正确的输出

{ egrep -A1 ';|abc\[0\]' | egrep -v ';|^--'; } < /tmp/corpus
纯GNU-sed sed-n'/;/{:kn;h;//bk}/abc\[0\]/{x;//!{p;x;p;x}'文件 xyz诸如此类, abc[0] 废话 abc[0]
你自己试过什么吗?你以前也发过类似的问题,没有一条评论向我们展示你的努力打印,因为上面的行也有
模式???你能回答这些评论吗?你能解释一下它到底做了什么吗?它将你的输入作为
文件
,并根据我对此所做的一些假设编译所需的输出。
{ egrep -A1 ';|abc\[0\]' | egrep -v ';|^--'; } < /tmp/corpus
egrep -A1 ';|abc\[0\]' /tmp/corpus | egrep -v ';|^--'
sed -n '/;/ {:k n;h; // bk}; /abc\[0\]/ {x ;//! {p;x;p;x}}' file xyz blah blah, abc[0] pqr blah blah abc[0]