我有一个像“string1,string2,string3”这样的字符串
我想将其转换为 ["string1","string2","string3"]
我尝试使用
sed 's/\(,\)/"\1"/g'
但它的回归string1","string2","string3
答案1
由于您已经可以在逗号周围插入引号,因此只需在开头和结尾添加["
和即可:"]
sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
例子:
$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]
答案2
这是一个纯粹的 bash 解决方案:
$ str='string1,string2,string3'
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]
因为这种方法不需要外部实用程序,也不需要子进程,所以应该很快。
怎么运行的
我们使用bash的模式替换将所有逗号替换为","
.因为"
是 shell 活动字符,所以我们必须在命令中转义它:
$ echo ${str//,/\",\"}
string1","string2","string3
最后一步是添加到字符串的["
开头和"]
结尾。因此:
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]