在与getline匹配后询问线

时间:2012-02-29 17:26:15

标签: bash awk getline

这有什么不对吗?

for i in {0..16};do 
awk '/foo/ {while (getline > 0); print $0}' ${array[$i]} >> lines.txt;done

我认为“表达”getline>只要getline成功读取输入行,0“就为真。当它到达文件结尾时,getline返回0并退出循环。”

我想在包含“foo”的那一行之后打印出每一行。

,我得到类似于我想要的东西,但不正确。

2 个答案:

答案 0 :(得分:3)

取出分号。

awk '/foo/ { while(getline > 0) { print }}'

或者

awk 'p; /foo/{p=1}'

答案 1 :(得分:0)

这是你的命令:

awk '/foo/ {while (getline > 0); print $0}'

我认为打印输入文件的最后一行。因为你有一个“;”在while(..)之后,所以它使while(..)获取每一行(不打印)直到结束,然后打印$ 0将它打印出来(最后一行)。

顺便说一下,你的工作会有更简单的解决方案。 e.g。

awk '/foo/{o=1}o'