用双引号分开两个蜇

时间:2016-11-10 09:28:48

标签: linux shell unix sed

在我的脚本中,字符串值如下所示

QUEUE_VALUE=ABC:CDE

我需要输出"ABC","CDE"

我尝试使用以下命令,我的输出为ABC","CDE

echo ${QUEUE_NAME} | sed s/:/\"\,\"\/g

你能帮助我吗,有没有更好的使用命令。

4 个答案:

答案 0 :(得分:1)

您可以试试sed

$ echo $QUEUE_VALUE | sed -e 's/[^:]*/"&"/g' -e 's/:/,/g'
"ABC","CDE"

答案 1 :(得分:1)

echo QUEUE_VALUE=ABC:CDE | awk -F= '{split($2,a,":");print "\"" a[1] "\",\""a[2] "\""}'
"ABC","CDE"

awk解决方案:此处将由=分隔的第二个字段拆分为两部分,并根据您的需要对其进行格式化。

答案 2 :(得分:0)

class Program { static void Main(string[] args) { Manager manager = new Manager(); manager.Start(); //Console.ReadKey(); Thread.Sleep(5000); manager.Cancel(); } }

答案 3 :(得分:0)

你的sed命令完成了你需要的大部分工作。用:替换每个","会处理所有分隔符。然后,您想要用双引号替换输入的开头(^)和结尾($):

echo "$QUEUE_VALUE" | sed -e 's/:/","/g' -e 's/^/"/' -e 's/$/"/'

在上文中,我用单引号编写了sed命令,因为我们不想进行任何扩展,我们可以更清晰地编写,而不需要大量的反斜杠。

这是我们可以用Bash做的替代。主要部分是"${QUEUE_VALUE//:/\",\"}"(或"${QUEUE_VALUE//:/'","'}"更简单的引用),添加初始引号和最终引号很简单:

echo \""${QUEUE_VALUE//:/'","'}"\"

另一种思维方式是用一对引号中包含的相同运行替换任何不是:的字符集,然后用逗号替换每个:。 sed命令是

sed -e 's/[^:]*/"&"/g' -e 'y/:/,/'

(请注意,我们匹配零个或多个非冒号字符,以便正确引用空元素。)这样就可以在纯Bash中轻松完成。< / p>