2016-09-26 30 views

回答

6

如果你的問題是完全一樣的在你的問題中的例子,從@muzido,得到答案會給你最後一場。

如果你只是想知道通過split()數組的最後一個元素:

split()函數將返回你多少元素它只是「分裂」,測試你的代碼:awk '{print split($1,A,".")}' file你將看到的數字。

awk '{n=split($1,A,"."); print A[n]}' file 
# n is the length of array A 
+0

完美,謝謝! –

+0

@anshulgupta @anshulgupta你甚至可以:'print A [split($ 1,A,「。」)]';-) – Kent

+0

讓我知道你是否可以在我最終確定我的代碼之前對其進行優化;) –

2

如果你有GNU awk,你可以嘗試一個陣列上的功能length

awk '{split($1,A,"."); print A[length(A)]}' 
+0

brillient ....... –

+1

'length()'這裏的函數是多餘的 – Kent

+0

@Kent我同意'split()'和'length()'是多餘的。不過,我發現'length()'與數組一起工作很好。 – oliv

1

爲什麼不......然後,你可以只是使用它

$ awk '{print A[split($3,A,".")],$0}' input.txt 

希望它能幫助!

1

肯特已經給了你split()的答案,但是你不需要爲此創建/使用一個數組。用GNU awk for gensub():

$ awk '{print gensub(/.*\./,"",1,$3), $0}' file 
ghi 123 456 abc.def.ghi 789 
rfv 321 654 qaz.wsx.edc.rfv 987 
相關問題