2011-03-28 46 views

回答

40

是的,在awk使用match()函數,並給它一個可選的數組參數(在我的例子中爲a)。當你這樣做時,第0個元素將是匹配的正則表達式

$ echo "blah foo123bar blah" | awk '{match($2,"[a-z]+[0-9]+",a)}END{print a[0]}' 
foo123 
+1

我知道的grep -o,它必須是在AWK :) – Istvan 2011-03-29 00:03:16

+0

@lstvan看到更新 – SiegeX 2011-03-29 00:05:21

+0

好極了,這正是我需要的,塔NKS! – Istvan 2011-03-29 08:45:17

17

awk特定的(而不是一個使用gawk)實現解決方案的一部分:

$ echo "blah foo123bar blah" | awk 'match($0,/[a-z]+[0-9]+/) {print substr($0,RSTART,RLENGTH)}' 
foo123 
1

我用這種構造頗有幾分:

split(substr($0, match($0, /[0-9]+ [Bb]ytes/)), a, " "); 
print a[1];