正規表現にマッチした部分だけを取り出す


$echo "test4325363test" | awk "/(.*)([0-9]+)(.*)/ {print NUMBER HERE!}"

とした場合に数字だけを表示したいそうですが、awk で RSTART, RLENGTH をうまく使うのは慣れが必要かもしれません。

echo "test4325363test" | awk '
    match($0,/[0-9]+/) {
        print substr($0,RSTART,RLENGTH)
    }
'

もちろん、gawk なら gensub() で後方参照ができますから、もっとスマートに記述できます。

gawk '{print gensub(/(.*)([0-9]+)(.*)/,"\\2","")}'