https://stackoverflow.com/a/7451478/15603477
我明白grep -A1 'blah' logfile | grep -v "blah"
但我不明白sed -n '/blah/{n;p;}' logfile
到目前为止,我检查了手动 sed 命令行选项页面: https ://www.gnu.org/software/sed/manual/html_node/Command_002dLine-Options.html 。只有-n
安静的意思。显然/blah/
是指模式/blah/
然后难以理解的部分是{n;p;}
通常 sed 打印
pattern space
处理结束时的任何内容。该-n
选项禁用此打印,因此只有明确的打印请求才会产生输出。程序
/blah/{n;p;}
说“如果行匹配blah
,则执行n
andp
命令”。n
说“将下一行读入pattern space
”并且p
说“打印pattern space
”。请注意,
grep -A1 "blah" | grep -v "blah"
对于连续行包含blah
. 该grep
对永远不会输出带有 的行blah
,但 sed 可以。grep 对的输出也可以包含==
第一个 grep 引入以划分块。