Linux 逗号分隔值转换为单引号和逗号分隔值
我的数据如下Linux 逗号分隔值转换为单引号和逗号分隔值,linux,bash,shell,Linux,Bash,Shell,我的数据如下 abc,defg,hijklm,op,qrs,tuv 我希望将此数据转换为 'abc','defg','hijklm','op','qrs','tuv' 我想在linux上做。我用了“sed”。我在网上到处找,但没有找到解决办法。请帮助我。在开始(^)和结束($)添加一个单引号,并使用sed将逗号替换为3个表达式(使用-e选项指定它们): (另外:使用双引号保护单引号) 结果: 'abc','defg','hijklm','op','qrs','tuv' 在a
abc,defg,hijklm,op,qrs,tuv
我希望将此数据转换为
'abc','defg','hijklm','op','qrs','tuv'
我想在linux上做。我用了“sed”。我在网上到处找,但没有找到解决办法。请帮助我。在开始(
^
)和结束($
)添加一个单引号,并使用sed将逗号替换为3个表达式(使用-e
选项指定它们):
(另外:使用双引号保护单引号)
结果:
'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);}"
echo abc、defg、hijklm、op、qrs、tuv | awk-F,“{for(i=1;i在开始(^
)和结束($
)添加一个单引号,并使用sed用3个表达式(使用-e
选项指定它们)替换逗号(就像您所做的那样):
(另外:使用双引号保护单引号)
结果:
'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);}"
echo abc、defg、hijklm、op、qrs、tuv | awk-F,“{for(i=1;i使用awk
gsub
函数。这里所有的“,
”都替换为,”
,行首和行尾都替换为“”
”
使用awk
gsub
函数。这里所有的“,
”都被”,“
替换,行的开始和结束都被“”
”替换
另一个awk
$ awk -F, -v OFS="','" -v q="'" '{$1=q $1; print $0 q}' file
另一个awk
$ awk -F, -v OFS="','" -v q="'" '{$1=q $1; print $0 q}' file
我会使用awk
。如果您的示例反映了您输入的确切结构,那么用,
替换所有,
可能更简单,然后在开头和结尾添加一个额外的,
。我这样做了| sed's/,“/”,“/”,但它不起作用。如果您的示例反映了确切的结构,我将使用awk
输入的结构,可能更简单的方法是将所有的,
替换为,“
,然后在开头和结尾添加一个额外的”
。我做了这个| sed的/,/,“/”,“/”,但它工作起来并不完美。谢谢brocan,请您解释一下从第一个到第二个是什么。请,谢谢。看起来非常好除了开始和结束被处理外,请尝试。工作完美。谢谢brocan,请您解释一下从first-e开始发生了什么。请,谢谢。看起来非常像您的尝试,除了开始和结束被处理外。