2013-03-27 45 views
4

我有一個輸入文件文件,其內容不斷更新 不同數量的字段,我試圖打印到一個新文件 下一輸入文件的每行的最後一個字段: AWK '{打印$(NF-1)}' OUTPUTFILEAWK-打印每行輸入文件的最後一個字段的下一個字段

錯誤: 和 AWK:(FILENAME = - FNR = 2)致命:嘗試訪問字段-1

需要幫助。在此先感謝

回答

5

在沒有字段(空白行或全部空白)NF爲0,所以評估爲$(-1)。此外,如果只有一個字段,您的代碼將打印$0,這可能不是您想要的。

awk 'NF>=2 {print $(NF-1)}' 
3

應該awk 'NF > 1 { print $(NF - 1); }'

awk 'NF { print $(NF - 1) }'是不正確的。當NF == 1它將打印$0這不是旁邊的最後一個字段

+0

+1的解決方案,但失去了空語句(尾隨分號) – 2013-03-27 15:29:37

+0

@EdMorton:你是什麼意思*「,但失去了空聲明(尾隨分號)「*? – pynexj 2013-03-28 02:29:11

+1

語句'print $(NF-1)'後面的分號引入了一個空/空的隨後語句。只要擺脫分號並解決問題,即使用'{print $(NF-1)}'而不是'{print $(NF-1); }'。 – 2013-03-28 03:39:03

-1

另一個AWK行:(高爾夫位):

awk 'NF>1&&$0=$(NF-1)' 
+0

它工作嗎? '回聲foo | awk'NF && $ 0 = $(NF-1)''輸出'foo'。 – pynexj 2013-03-28 02:28:16

+0

@clarkw你的權利。應該是nf> 1。固定 – Kent 2013-03-28 11:07:45

相關問題