使用 sed 仅显示匹配行之后的下一行

使用 sed 仅显示匹配行之后的下一行

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;}

答案1

pattern space通常 sed 会在处理结束时打印任何内容。该-n选项禁用此打印,因此只有显式打印请求才会产生输出。

程序/blah/{n;p;}说“如果该行匹配blah,则执行np命令”。n说“将下一行读入pattern space”,并p说“打印pattern space”。

grep -A1 "blah" | grep -v "blah"请注意,对于连续行包含 的情况,此 sed 程序会产生不同的结果blah。该grep对永远不会输出带有 的行blah,但 sed 可以。 grep 对的输出还可以包含==第一个 grep 引入的用于划分块的内容。

相关内容