2014-01-24 169 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