![Conversão de string para se parecer com lista python](https://rvso.com/image/154483/Convers%C3%A3o%20de%20string%20para%20se%20parecer%20com%20lista%20python.png)
Eu tenho uma string como 'string1,string2,string3'
Quero converter o mesmo para ["string1","string2","string3"]
Eu tentei usar
sed 's/\(,\)/"\1"/g'
Mas está voltandostring1","string2","string3
Responder1
Como você já pode inserir aspas entre as vírgulas, basta acrescentar ["
e "]
no início e no final:
sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
Exemplo:
$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]
Responder2
Aqui está uma solução bash pura:
$ str='string1,string2,string3'
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]
Como essa abordagem não requer utilitários externos nem subprocessos, isso deve ser rápido.
Como funciona
Usamos bashsubstituição de padrãopara substituir todas as vírgulas por ","
. Por "
ser um caractere ativo no shell, devemos escapar dele no comando:
$ echo ${str//,/\",\"}
string1","string2","string3
A última etapa é adicionar ["
no início e "]
no final da string. Por isso:
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]