2013-07-26 80 views
6

我有一個看起來像一個文件:如何刪除符合模式的行和使用sed後面的行?

good text 
good text 
FLAG bad text 
bad text 
good text 
good text 
good test 
bad Text FLAG bad text 
bad text 
good text 

我需要刪除含有「標誌」 總是需要刪除緊隨「FLAG」太行的一個線路的任何線路。

「標記」行不規則,我不能依賴任何行號策略。

任何人都知道如何用sed做到這一點?

回答

8

使用的GNU版本的擴展:

sed -e '/FLAG/,+1 d' infile 

它產生:

good text 
good text 
good text 
good text 
good test 
good text 
+0

完美。我正在嘗試類似的東西,但無法正確猜測語法。謝謝! –

9

這工作,並且不依賴於任何擴展:

sed '/FLAG/{N 
d 
}' infile 

N將下一行讀入模式空間,然後d刪除模式空間。

+1

非常感謝。希望我能在這裏接受兩個答案。給你一個upvote。 –

2

這裏是awk一個辦法:

awk '/FLAG/{f=1;next}f{f=0;next}1' file 

awk '/FLAG/{getline;next}1' file