String-Konvertierung, damit sie wie eine Python-Liste aussieht

String-Konvertierung, damit sie wie eine Python-Liste aussieht

Ich habe eine Zeichenfolge wie „String1, String2, String3“.

Ich möchte dasselbe in ["string1","string2","string3"] umwandeln.

Ich habe versucht,

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

Aber es kehrt zurückstring1","string2","string3

Antwort1

Da Sie bereits Anführungszeichen um die Kommas einfügen können, fügen Sie am Anfang und Ende ["einfach „und“ hinzu:"]

sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'

Beispiel:

$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]

Antwort2

Hier ist eine reine Bash-Lösung:

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

Da dieser Ansatz keine externen Dienstprogramme und keine Unterprozesse erfordert, sollte er schnell gehen.

Wie es funktioniert

Wir verwenden Bash'sMustersubstitutionum alle Kommas durch zu ersetzen ",". Da "es sich um ein Shell-aktives Zeichen handelt, müssen wir es im Befehl maskieren:

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

["Der letzte Schritt besteht darin , am Anfang und "]am Ende der Zeichenfolge etwas hinzuzufügen . Also:

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

verwandte Informationen