2016-09-26 114 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 
相关问题