2012-08-13 121 views
3

我有如下文件:分裂根據字段分隔爲每行一個字符串

10temp3 
20/temp4 
28 temp 5 

我使用下面的命令分割線,並獲得該行的最後一個數字。

awk -F"temp" '{print $NF}' temp3 

我得到的輸出繼電器是:

> awk -F"temp" '{print $NF}' temp3 
10temp3 
20/temp4 
28 temp 5 

令人驚訝的,如果我使用NAWK我得到預期的輸出。

> nawk -F"temp" '{print $NF}' temp3 
3 
4 
5 
> 

我可以知道原因嗎? awk是否不支持作爲分隔符提到的字符串?

+0

如果行中的最後一個數字是你想要的所有東西'sed's /.* temp * //'file'可能是一個更好的選擇。 – potong 2012-08-13 20:01:03

+0

我想在這裏探究awk的行爲..我知道這可以通過使用其他工具如sed和perl來完成。 – Vijay 2012-08-14 06:10:44

回答

2

確實Solaris awk只考慮單個字符。我想說這可能是由於傳統,以及nawk的出貨原因。

-F開關確實是特殊的:它把你的引用字符串的第一個字符,並丟棄剩下的,所以t仍然---代表「尋找標籤作爲字段分隔符」。

+0

那麼如果這就是爲什麼它不考慮至少t字段分隔符和打印emp3作爲第一行的$ NF? – Vijay 2012-08-13 13:52:54

+1

@ShiDoiSi:'$ NF'表示線上最後一個字段的內容。你是正確的,AWK不使用美元符號來表示變量,它將它們用於字段編號。 「NF」是包含最後一個字段號的變量。 – 2012-08-13 23:42:31

+0

@DennisWilliamson對,我沒有密切關注他的預期輸出,我以爲他想打印字段的數量。 – ShiDoiSi 2012-08-14 07:14:37

相關問題