%20exatamente%20tr%C3%AAs%20caracteres%20ap%C3%B3s%20um%20determinado%20caractere%20(v%C3%ADrgula%20neste%20caso)%3F.png)
Tenho um arquivo com informações de país, cidade e estado, entre outras informações. O conteúdo do arquivo é mais ou menos assim: (apenas a parte referente à pergunta 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 de TN (por exemplo) e também substituir ',' por uma nova linha. Mas presumo 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 sed, awk, etc.
Responder1
Eu usaria sed
para isso:
sed -E 's/, /\n/;s/([A-Z]{2}) /\1\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 uma vírgula seguida de um espaço e substitui por nova linha.
A segunda expressão s/([A-Z]{2}) /\1\n/
procura quaisquer duas letras maiúsculas seguidas de um espaço e as substitui por essas letras seguidas de uma nova linha.
sed --version
sed (GNU sed) 4.2.2