列値の前にアポストロフィ( ')を追加するには?

列値の前にアポストロフィ( ')を追加するには?

複数の列と1000のレコードを含むCSVファイルがあり、列の1つ(2番目の列であると仮定)のすべての値の前にアポストロフィを追加する必要があります。'最初の行やヘッダー行に加えて、単純な行があるかもしれません。awkまたはを使用してどのようにこれを達成できますかsed?二重引用符で囲まれた値には、複数のカンマを含めることができます。

サンプル:

"col1","col2","col3","col4","col5"
"value11","value12","value13","value14","value15"
"value21","value22","value23","value24","value25"
"value31","value32","value33","value34","value35"

予想出力:

"col1","col2","col3","col4","col5"
"value11","'value12","value13","value14","value15"
"value21","'value22","value23","value24","value25"
"value31","'value32","value33","value34","value35"

ベストアンサー1

sed:

sed '2,$s/^\("[^"]*","\)/\1'"'"/ test.in

一部のエスケープを削除するには、ERE を使用します。

sed -E '2,$s/^("[^"]*",")/\1'"'"/ test.in

奇妙な:

awk -F, 'NR>1{sub(/^"/,"\"'"'"'",$2)}1' test.in

引用を心配しない場合は、エスケープコードを使用してください。

awk -F, '{sub(/^"/,"\"\x27",$2)}1' test.in

おすすめ記事