awk スクリプトを実行すると構文エラーが発生します。スクリプトは次のとおりです。
awk -F\" 'for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}'
実際のデータがどのように見えるかのサンプルは次のとおりです (囲まれ、パイプで区切られています):
"data"|"data"|"data"|"data"|"data"
コードからわかるように、私がやりたいことは次のとおりです。すべてのフィールドを読み取り、フィールドが数値(常に10進数)の場合は、ポイントをコンマに置き換えます。また、gsub 関数でカンマをエスケープしようとしました。
awk -F\" 'for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,\,,$1) }}'
しかし、それは問題を解決していません。問題がどこにあるのか分かりますか? 正常に見える正規表現との比較、ループとifステートメントも、エラーメッセージは
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: for( i = 1 ; i <= NF; i++){if ($i == "^[0-9]+$"){ gsub(.,,,$1) }}
awk: cmd. line:1: ^ 1 is invalid as number of arguments for gsub