私はカンマ区切り
abc,defg,hijklm,op,qrs,tuv
としてデータを持っている私は、このデータは、私は、Linuxでやりたい
'abc','defg','hijklm','op','qrs','tuv'
に変換することにしたいです。私は "sed"を使いました。私はインターネットを全面的に見てきましたが、解決策を見つけられませんでした。私を助けてください。
私はカンマ区切り
abc,defg,hijklm,op,qrs,tuv
としてデータを持っている私は、このデータは、私は、Linuxでやりたい
'abc','defg','hijklm','op','qrs','tuv'
に変換することにしたいです。私は "sed"を使いました。私はインターネットを全面的に見てきましたが、解決策を見つけられませんでした。私を助けてください。
(あなたがやったように)3つの式(それらを指定する-e
オプションを使用して)とsedを使用して開始時に単一引用符(^
)&エンド($
)を追加し、引用カンマ引用符でカンマを置き換えます。
echo abc,defg,hijklm,op,qrs,tuv | sed -e "s/^/'/" -e "s/\$/'/" -e "s/,/',\'/g"
'abc','defg','hijklm','op','qrs','tuv'
:(も:二重引用符で単一引用符を守る)で
結果一般awk
で
(多分少し不器用)、フィールドの解析がawk
でネイティブに処理されますので、より良い:
echo abc,defg,hijklm,op,qrs,tuv | awk -F, "{for (i=1;i<=NF-1;i++) printf(\"'%s',\",\$i); printf(\"'%s'\",\$i);}"
(最後のものを除くすべてのフィールドに加えてカンマを印刷)
awk
gsub
機能を使用します。ここでは、すべて ",
"は','
に置き換えられ、開始され、行末は "'
"に置き換えられます。
echo $x |awk -v q="'" '{gsub(/,/, q "&" q);gsub(/^|$/,q)}1'
'abc','defg','hijklm','op','qrs','tuv'
awk '{gsub(/,/,"\47,\47");print "\47"$0"\47"}' file
'abc','defg','hijklm','op','qrs','tuv'
別awk
$ awk -F, -v OFS="','" -v q="'" '{$1=q $1; print $0 q}' file
私は 'awk'を使用します。 – GMichael
あなたの例が入力の** EXACT **構造を反映しているならば、すべての '、'を ''、''に置き換えて、最初と最後に ''を追加する方が簡単かもしれません。 – FDavidov
私はこれをしました | sed 's /、/'、 '/' しかし動作しません。 – vkrishna