awkで正規表現にマッチする箇所のみを取り出して利用する例

match()を使うと、マッチした部分文字列のインデックスと長さが、RSTARTとRLENGTHに入る。それをsubstrで切り出す。
ls | awk '{ match($0, "#[0-9]+"); if (RSTART > 0) printf("cp \"%s\" file-%03d.dat\n", $0, substr($0, RSTART+1, RLENGTH)) }' 

0 件のコメント: