Sed

在匹配的 sed 之後僅顯示下一行

  • January 10, 2022

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,則執行nandp命令”。n說“將下一行讀入pattern space”並且p說“列印pattern space”。

請注意,grep -A1 "blah" | grep -v "blah"對於連續行包含blah. 該grep對永遠不會輸出帶有 的行blah,但 sed 可以。grep 對的輸出也可以包含==第一個 grep 引入以劃分塊。

引用自:https://unix.stackexchange.com/questions/685665