Shell命令将逗号分隔的字符串转换为双引号逗号分隔的字符串

时间:2017-12-12 18:21:53

标签: linux bash shell comma double-quotes

我有一个逗号分隔值,如:

package1,package2

我想要一个shell命令将其转换为:

"package1","package2"

3 个答案:

答案 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替换为{= ,} ","。在逗号分隔字符串的开头和结尾处缺少"是手动添加的。因为它们在双引号字符串中,所以必须对它们进行转义。 "\"...\""评估为"..."