这个怎么了?与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”的行后的每一行。我得到了类似于我想要的东西,但是它不正确。
这个怎么了?与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”的行后的每一行。我得到了类似于我想要的东西,但是它不正确。
取出分号。
awk '/foo/ { while(getline > 0) { print }}'
或者
awk 'p; /foo/{p=1}'
我拿出分号! – AWE 2012-02-29 17:57:17
这是你的命令:
awk '/foo/ {while (getline > 0); print $0}'
我认为这将仅打印输入文件的最后一行。既然你有一个“;” while(..)后,所以它使while(..)取出每行(不打印)直到结束,然后打印$ 0将打印出它(最后一行)。
顺便说一句,会有更容易的解决方案为您的工作。例如
awk '/foo/{o=1}o'
这将打印'foo'行,将'o'移动到前面或添加'next'。 – Kevin 2012-02-29 17:47:39
如何精确贵输出与预期的有什么不同?一个例子会很好。 – Kevin 2012-02-29 17:40:15
为什么不只是'sed -n -e'/ foo /,$ p''? – Sorpigal 2012-02-29 17:41:02
它只打印最后一行 – AWE 2012-02-29 17:42:11