数字が二重引用符で囲まれ、一部には囲まれていない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