Python リストのような文字列変換

Python リストのような文字列変換

「string1,string2,string3」のような文字列があります

同じものを["string1","string2","string3"]に変換したい

使ってみた

sed 's/\(,\)/"\1"/g'

しかし、それは戻ってくるstring1","string2","string3

答え1

すでにカンマの前後に引用符を挿入できるので、先頭と末尾に["andを追加するだけです。"]

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のパターン置換すべてのカンマを に置き換えます","。 は"シェルでアクティブな文字なので、コマンド内でエスケープする必要があります。

$ echo ${str//,/\",\"}
string1","string2","string3

["最後のステップは、文字列の先頭と"]末尾に追加することです。つまり、次のようになります。

$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]

関連情報