Como posso adicionar uma nova linha (em cada linha de um arquivo de texto) exatamente três caracteres depois de um determinado caractere (vírgula, neste caso)?

0

Eu tenho um arquivo com informações de país, cidade e estado, entre outras informações. O conteúdo do arquivo é algo como isto: (somente a parte referente à questão mostrada)

Some lines (rows) of text
...
United States
Memphis, TN 38116-3252
...
More lines of text
...
United States
Austin, TX 78726
...

O que eu gostaria de fazer é adicionar uma nova linha antes do CEP ou depois do TN (por exemplo) e também substituir o ',' por uma nova linha. Mas estou assumindo que a segunda parte será mais fácil.

Formato desejado:

Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726
...

O objetivo final é importar os dados para uma planilha como:

Some info | Country | State | City | Etc.
abc       | United..| Texas | Austi| zcx

Estou aberto para qualquer coisa que funcione como sed, awk, etc.

    
por Shaban Shneta 29.10.2016 / 18:19

1 resposta

1

Eu usaria sed para isso:

sed -E 's/, /\n/;s/([A-Z]{2}) /\n/' States  
Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726

A primeira expressão s/, /\n/ procura por uma vírgula seguida por um espaço e substitui por nova linha.

A segunda expressão s/([A-Z]{2}) /\n/ procura por duas letras maiúsculas seguidas por um espaço e substitui por essas letras seguidas por uma nova linha.

sed --version
sed (GNU sed) 4.2.2
    
por 29.10.2016 / 18:28