Text-Processing
刪除包含特定字元串的行和以下行
我用這個
cat foo.txt | sed '/bar/d'
刪除
bar
文件中包含字元串的行。但是,我想刪除這些行和緊隨其後的行。最好在
sed
或awk
MinGW32 中可用的其他工具中。這與我可以使用的內容相反,可以
grep
列印-A
匹配-B
行以及匹配行之前/之後的行。有什麼簡單的方法可以實現嗎?
如果您有 GNU sed(非嵌入式 Linux 或 Cygwin):
sed '/bar/,+1 d'
如果你有
bar
兩個連續的行,這將刪除第二行而不分析它。例如,如果您有一個 3 行文件bar
//bar
,foo
則該foo
行將保留。
如果
bar
可能發生在連續的行上,你可以這樣做:awk '/bar/{n=2}; n {n--; next}; 1' < infile > outfile
通過將上面的 2 更改為要刪除的行數(包括匹配的行數),可以適應刪除多於 2 行的行。
sed
如果沒有,可以使用@MichaelRollins 的解決方案輕鬆完成,或者:sed '/bar/,/^/d' < infile > outfile