我有一个逗号分隔值,如:
package1,package2
我想要一个shell命令将其转换为:
"package1","package2"
答案 0 :(得分:4)
怎么样
$ line='package1,package2'
$ printf '"%s"\n' "${line//,/\",\"}"
"package1","package2"
或
$ IFS=, read -ra fields <<<"$line"
$ printf '"%s"\n' "${fields[@]}" | paste -sd,
"package1","package2"
答案 1 :(得分:2)
另一种方法是使用sed将所有非逗号字符括在双引号中:
$ sed 's/[^,]*/"&"/g' <<< "package1,package2"
"package1","package2"
答案 2 :(得分:0)
试试这个:
csv="comma,separated,string"
csv="\"$(sed 's/,/","/g' <<< "$csv")\""
sed
命令会将每个(=全局s/...
)逗号.../g
替换为{= ,
} ","
。在逗号分隔字符串的开头和结尾处缺少"
是手动添加的。因为它们在双引号字符串中,所以必须对它们进行转义。 "\"...\""
评估为"..."
。