2011-11-26 46 views
1
gawk '/<Lexer>/,/<\/Lexer>/' file 

這個工作,但它打印的第一個和最後一個記錄,我想省略。如何做?如何跳過打開/關閉範圍模式的記錄?

它說:「打開範圍模式的記錄和關閉範圍模式的記錄都符合範圍模式。如果您不想操作這些記錄,則可以編寫規則操作中的if語句將它們與您感興趣的記錄區分開來。「但沒有例子。 我試過類似 gawk '/<Lexer>/,/<\/Lexer>/' {1,FNR-1} file 但它不起作用。 如果你有更好的方法來做到這一點,而不使用awk,那麼這麼說吧。

回答

0

你可以用2個獨立的匹配語句和可變

gawk '/<Lexer>/{p=1; next} /<\/Lexer>/ {p=0} p==1 {print}' file 

這符合<Lexer>和將p設置爲1,然後跳到下一行做到這一點。當p是1時,它打印當前行。當匹配</Lexer>時,它將p設置爲0並跳過。當p爲0時,打印被抑制。

相關問題