你剛剛給了一個棘手的(我不知道應該稱之爲好還是壞^ _ ^)例子。您的文字具有完全相同startpattern
和endpattern
(#
)
我猜你是爲sed '/#/,/#/d'
或sed -n '/#/,/#/!p'
尋找同樣的方式有一些similiar(不一樣的sed的)地址AWK模型。在手冊頁中有解釋。我說的不一樣,你的榜樣是好的。如果start == end
awk的地址模式是行不通的:
kent$ echo "abd
hfdh
#
fafa
deafa
123
#
end"|awk '/#/,/#/{next}1'
abd
hfdh
fafa
deafa
123
end
因爲AWK同一線路匹配(再次檢查手冊頁),但如果它們是不同的,看下面的例子:
kent$ echo "abd
hfdh
#
fafa
deafa
123
##
end"|awk '/#/,/##/{next}1'
abd
hfdh
end
它會給你想要的。所以如果是這樣的話,你可以這樣做:
awk '/start/,/end/{next}1'
是的,和sed的很相似。
如果開始和結束真的是一樣的,你想用awk做,你需要標誌。
kent$ echo "abd
hfdh
#
fafa
deafa
123
#
end"|awk '/#/&&!f{f=1;next}f&&/#/{f=0;next}!f'
abd
hfdh
end
那麼,在例如更好地使用^#$
,但這不是重點。我希望這回答了你的問題。
+1爲您的棘手示例文本! – Kent 2013-04-11 17:32:49