這個怎麼了?與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