在我的脚本中,字符串值如下所示
QUEUE_VALUE=ABC:CDE
我需要输出"ABC","CDE"
我尝试使用以下命令,我的输出为ABC","CDE
echo ${QUEUE_NAME} | sed s/:/\"\,\"\/g
你能帮助我吗,有没有更好的使用命令。
答案 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>