web-dev-qa-db-ja.com

Unix-CSVの最初の列を二重引用符で囲みます

私は次の形式のデータを持っています-

4,"abc"
8,"def"
9,"ghi"

最初の列の値を二重引用符で囲みたい。

"4","abc"
"8","def"
"9","ghi"

それ、どうやったら出来るの ?

2

非常に単純な置換は次のとおりです。

cat tmp.csv | awk -F, '{sub($1, "\"&\""); print}'

オプション-Fは、フィールド区切り文字がコンマであることをawkに指示し、sub(stitution)の引数は、最初のフィールドをそれ自体(&)で置き換え、前後に "を付けるようにawkに指示します。

6
MariusMatutiae

これはただの迅速で汚い方法です(より良い方法があります):

sed -e 's/"//g' -e 's/^\|$/"/g' -e 's/,/","/g' file.csv

最初のs/"//gはすべての"を削除します。
次に、s/^\|$/"/gは行の最初と最後に"を追加します。
そして最後のs/,/","/gはすべての,","に置き換えます。

もちろん、これはのみ",inフィールドがない場合に機能します。

0
Rik

これはあなたのために働くかもしれません(GNU sed):

sed 's/[^,]*/"&"/' file
0
potong