![Conversión de cadenas para que parezca una lista de Python](https://rvso.com/image/154483/Conversi%C3%B3n%20de%20cadenas%20para%20que%20parezca%20una%20lista%20de%20Python.png)
Tengo una cadena como 'cadena1,cadena2,cadena3'
Quiero convertir lo mismo a ["string1","string2","string3"]
Intenté usar
sed 's/\(,\)/"\1"/g'
pero esta regresandostring1","string2","string3
Respuesta1
Como ya puedes insertar comillas alrededor de las comas, simplemente añade ["
y "]
al principio y al final:
sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
Ejemplo:
$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]
Respuesta2
Aquí hay una solución bash pura:
$ str='string1,string2,string3'
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]
Debido a que este enfoque no requiere utilidades externas ni subprocesos, debería ser rápido.
Cómo funciona
Usamos bashsustitución de patronespara reemplazar todas las comas con ","
. Debido a que "
es un carácter activo en el shell, debemos escaparlo en el comando:
$ echo ${str//,/\",\"}
string1","string2","string3
El último paso es agregar ["
al principio y "]
al final de la cadena. De este modo:
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]