我有数据
abc,defg,hijklm,op,qrs,tuv
我希望将此数据转换为
'abc','defg','hijklm','op','qrs','tuv'
我想在linux中做。我用了#34; sed"。我一直在寻找互联网,但没有遇到解决方案。请帮帮我。
答案 0 :(得分:1)
在开始时添加单引号(^
)&结束($
),并使用带有3个表达式的sed(使用-e
选项指定它们),用引号逗号引用(就像你做的那样)替换逗号:
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);}"
(打印除最后一个字段外的所有字段和逗号)
答案 1 :(得分:1)
使用awk
gsub
功能。此处所有“,
”都替换为','
并开始,行的结尾替换为“'
”。
echo $x |awk -v q="'" '{gsub(/,/, q "&" q);gsub(/^|$/,q)}1'
'abc','defg','hijklm','op','qrs','tuv'
答案 2 :(得分:0)
awk '{gsub(/,/,"\47,\47");print "\47"$0"\47"}' file
'abc','defg','hijklm','op','qrs','tuv'
答案 3 :(得分:0)
另一个awk
$ awk -F, -v OFS="','" -v q="'" '{$1=q $1; print $0 q}' file