Text-Processing

刪除包含特定字元串的行和以下行

  • September 13, 2018

我用這個

cat foo.txt | sed '/bar/d'

刪除bar文件中包含字元串的行。

但是,我想刪除這些行和緊隨其後的行。最好在sedawkMinGW32 中可用的其他工具中。

這與我可以使用的內容相反,可以grep列印-A匹配-B行以及匹配行之前/之後的行。

有什麼簡單的方法可以實現嗎?

如果您有 GNU sed(非嵌入式 Linux 或 Cygwin):

sed '/bar/,+1 d'

如果你有bar兩個連續的行,這將刪除第二行而不分析它。例如,如果您有一個 3 行文件bar// barfoo則該foo行將保留。

如果bar可能發生在連續的行上,你可以這樣做:

awk '/bar/{n=2}; n {n--; next}; 1' < infile > outfile

通過將上面的 2 更改為要刪除的行數(包括匹配的行數),可以適應刪除多於 2 行的行。

sed如果沒有,可以使用@MichaelRollins 的解決方案輕鬆完成,或者:

sed '/bar/,/^/d' < infile > outfile

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