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开始发生了什么。请,谢谢。看起来非常像您的尝试,除了开始和结束被处理外。