51637


ファル名 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で３番目のファイールドだけを下記などで、  
sum += $3  
計算したいのでが、取得したcsvファイルが３桁カンマや円マークが  
入っているため計算できません。

正規表現で桁数カンマと、ダブルクオーテーション、円マークを  
取り除いたのですが、awkの正規表現でも同じようなことは可能でしょうか

"?\\(\d+),?(\d+)"?  
$1$2

最終的に、３番目のフィールドだけを計算したいのですが、  
awkではmatchを使うという記事を参考に書きを試して  
みましたが、うまくいきません。

awk -F, 'match($0, /"?\\(\d+),?(\d+)"?/, a) {print a[1]}' keisan.csv


CC BY-SA 4.0
2018-12-31T06:41:26.697
51628
2018-12-31T13:49:34.093
25524
question
正規表現 awk
awkで正規表現のキャプチャの利用方法


質問の例にあるのはGNU awk固有の書き方ですね。コマンド名をgawkとすると、こんな感じかと。

[code]

    $ gawk -F, 'match($3, /"?([0-9]+)"?/, a) { print a[1] }' keisan.csv
    
[/code]

一般的なawkだとこんな感じでしょうか。

[code]

    $ awk -F, 'match($3, /[0-9]+/) { print substr($3, RSTART, RLENGTH) }' < keisan.csv
    
[/code]


CC BY-SA 4.0
2018-12-31T13:49:34.093
51637
2018-12-31T13:49:34.093
4010
51628
answer