尾をトリミングし、シェルの先行番号に追加します。

尾をトリミングし、シェルの先行番号に追加します。

数字が二重引用符で囲まれ、一部には囲まれていないCSVファイルがあります。数字の負の記号のみを変更する必要がありました。次の負の記号を削除して最初に追加する必要がありました。

入力例:

column 1, column 2, column 3, column 4, column 5
12-,"455,365.44-","string with quotes-and with a comma in between","4,432",6787

出力例:

column 1, column 2, column 3, column 4, column 5
-12,"-455,365.44","string with quotes-and with a comma in between","4,432",6787

ベストアンサー1

牛に似た一種の栄養awk解決策:

awk -v FPAT='[^,"]+|"[^"]+"' '
       NR==1; NR>1{ 
           for (i=1; i<=NF; i++) { 
               if ($i~/^"?[0-9]+([0-9,.]+[0-9]+)?-"?$/) { 
                   sub(/-/, "", $i); 
                   sub(/[0-9]/, "-&", $i); 
               } 
               printf "%s%s",$i,(i==NF? ORS:",") 
           } 
       }' file.csv
  • -v FPAT='[^,"]+|"[^"]+"'- フィールド値を定義する正規表現パターン
  • $i~/^"?[0-9]+([0-9,.]+[0-9]+)?-"?$/- フィールドに数字とマイナス記号が含まれていることを確認してください-(数字は二重引用符で囲むことができます)。

出力:

column 1, column 2, column 3, column 4, column 5
-12,"-455,365.44","string with quotes-and with a comma in between","4,432",6787

おすすめ記事