文字列をPythonリストのように見えるように変換

文字列をPythonリストのように見えるように変換

「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"]

この方法には外部ユーティリティやサブプロセスは必要ないため、高速です。

どのように動作しますか?

私たちはバッシュを使いますパターン交換すべてのコンマはシェルアクティブ文字","なので、"次のコマンドでエスケープする必要があります。

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

最後のステップは、文字列の["先頭と末尾に追加することです。"]したがって:

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

関連情報