Sed 如何找到特定的线时,它击中了一个特定的模式
每当它看到一种模式;和abc[0]我需要打印第一行之后;以及包含abc[0]的行 我有类似的东西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
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]