我有一個像“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"]