2014-01-24 164 views
0

有需要什麼來的......讓我們說我們有以下文本文件中一些幫助AWK命令打印反轉

aeht 
mark 
tjae 
aejra 
ytha 
mark 
yeaja 

所以它得開始打印,直到它找到這個詞mark,這將不打印,但改變awk的行爲,並停止打印下一行,直到它發現第二個mark,它將再次開始打印,等等,每次它發現mark行爲將改變... 這可能嗎?如何才能做到這一點?

(在mark線不應該被打印出來)

+0

在許多方面,但首先告訴我們你的企圖卡在哪裏。 – fedorqui

+0

我正在面臨問題,它會改變它的行爲! –

+0

向我們顯示您的代碼。 – grebneke

回答

3

無論你想在你的輸出或不是「標誌」,這條線應該給你幫助:

awk -v f=1 '/^mark$/{f*=-1;next}f>0' file 

測試:

kent$ cat file 
1 
2 
mark 
3 
4 
5 
mark 
6 
7 
8 
mark 
9 
10 

kent$ awk -v f=1 '/^mark$/{f*=-1;next}f>0' file 
1 
2 
6 
7 
8 
+0

+1的答案和另一個+1耐心的意見:) – fedorqui

+0

而要小心! http://stackoverflow.com/questions/21335019/file-copy-script-linux(Kent的幫助) – fedorqui

+1

@fedorqui謝謝..我讀了你鏈接的頁面,不明白你的意思,直到結尾問題...我會編輯這個問題。 – Kent

3
$ awk '/mark/{f=!f;next} !f' file 
aeht 
yeaja