Pergunta sobre a substituição de caracteres no arquivo de texto

2

Portanto, tenho alguns dados que são analisados neste formato separados por dois-pontos:

username:[email protected]:password:salt

Às vezes, o nome de usuário / salt pode conter dois pontos (:) nele. Eu quero substituir os separadores com um caractere diferente para que os dados sejam assim:

username', '[email protected]', 'password', 'salt

Eu estava usando este comando:

sed "s/:/'/" filename.txt > newfile.txt

Mas não consigo pensar em uma maneira de ignorar os dois pontos nos campos username / salt. Alguma idéia?

    
por J. Doe 27.08.2015 / 20:52

1 resposta

3

Conteúdo do arquivo:

username:[email protected]:password:salt
user:name:[email protected]:password:salt
username:[email protected]:password:sa:lt
user:name:[email protected]:password:sa:lt

Com o GNU sed:

sed -E "s/(.*):([^:]*@[^:]*):([^:]*):(.*)/', '', '', '/" file

Saída:

username', '[email protected]', 'password', 'salt
user:name', '[email protected]', 'password', 'salt
username', '[email protected]', 'password', 'sa:lt
user:name', '[email protected]', 'password', 'sa:lt
    
por 27.08.2015 / 21:11