質問: ファル名 keisan.csv 2018年月21日,abc,\387 2018年6月23日,abc,"\1,418" 2018年6月23日,abc,\276 2018年6月30日,abc,\925 2018年6月30日,abc,\619 awkで3番目のファイールドだけを下記などで、 sum += $3 計算したいのでが、取得したcsvファイルが3桁カンマや円マークが 入っているため計算できません。 正規表現で桁数カンマと、ダブルクオーテーション、円マークを 取り除いたのですが、awkの正規表現でも同じようなことは可能でしょうか "?\(\d+),?(\d+)"? $1$2 最終的に、3番目のフィールドだけを計算したいのですが、 awkではmatchを使うという記事を参考に書きを試して みましたが、うまくいきません。 awk -F, 'match($0, /"?\(\d+),?(\d+)"?/, a) {print a[1]}' keisan.csv
回答: 質問の例にあるのはGNU awk固有の書き方ですね。コマンド名をgawkとすると、こんな感じかと。 ``` $ gawk -F, 'match($3, /"?([0-9]+)"?/, a) { print a[1] }' keisan.csv ``` 一般的なawkだとこんな感じでしょうか。 ``` $ awk -F, 'match($3, /[0-9]+/) { print substr($3, RSTART, RLENGTH) }' < keisan.csv ```