Conversão de string para se parecer com lista python

Conversão de string para se parecer com lista python

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

informação relacionada