私は次の形式のデータを持っています-
4,"abc"
8,"def"
9,"ghi"
最初の列の値を二重引用符で囲みたい。
"4","abc"
"8","def"
"9","ghi"
それ、どうやったら出来るの ?
非常に単純な置換は次のとおりです。
cat tmp.csv | awk -F, '{sub($1, "\"&\""); print}'
オプション-Fは、フィールド区切り文字がコンマであることをawkに指示し、sub(stitution)の引数は、最初のフィールドをそれ自体(&)で置き換え、前後に "を付けるようにawkに指示します。
これはただの迅速で汚い方法です(より良い方法があります):
sed -e 's/"//g' -e 's/^\|$/"/g' -e 's/,/","/g' file.csv
最初のs/"//g
はすべての"
を削除します。
次に、s/^\|$/"/g
は行の最初と最後に"
を追加します。
そして最後のs/,/","/g
はすべての,
を","
に置き換えます。
もちろん、これはのみ"
と,
inフィールドがない場合に機能します。
これはあなたのために働くかもしれません(GNU sed):
sed 's/[^,]*/"&"/' file