【发布时间】:2016-04-08 02:40:11
【问题描述】:
我想制作一个 sed 命令来更改每个逗号分隔的部分都用双引号括起来的字符串。问题是某些值已经有双引号。
更改自:
ABZ00016,ABZ,"449,9",450,445,449,"-0,21",405,13,"182,15",0,0,0
到
"ABZ00016","ABZ","449,9","450","445","449","-0,21","405","13","182,15","0","0","0"
我准备了两个 sed 命令:
第一个命令排除带双引号的值
sed -e 's/"[^"]*"//g'
第二次给每个部分加双引号
sed -e 's/\([^,]*\),/"\1",/g'
现在我想从第一个命令中排除结果并使用第二个命令进行更改:
sed -e '/"[^"]*"/!s/\([^,]*\),/"\1",/g'
但它不起作用......
【问题讨论】:
-
你必须使用
sed吗?你对perl或awk也满意吗? -
如果您在 awk 中有解决方案,我将不胜感激 :-)
-
我在下面发布了一个 gnu-awk 解决方案。