¿Cómo puedo agregar una nueva línea (en cada fila de un archivo de texto) exactamente tres caracteres después de un determinado carácter (coma en este caso)?

¿Cómo puedo agregar una nueva línea (en cada fila de un archivo de texto) exactamente tres caracteres después de un determinado carácter (coma en este caso)?

Tengo un archivo con información de país, ciudad y estado, entre otros datos. El contenido del archivo se parece a esto: (solo se muestra la parte correspondiente a la pregunta)

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

Lo que me gustaría hacer es agregar una nueva línea antes del código postal o después de TN (por ejemplo) y también reemplazar ',' con una nueva línea. Pero supongo que la segunda parte será más fácil.

Formato deseado:

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

El objetivo final es importar los datos a una hoja de cálculo como:

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

Estoy abierto a cualquier cosa que funcione sed, awk, etc.

Respuesta1

Yo usaría sedpara esto:

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

La primera expresión s/, /\n/busca una coma seguida de un espacio y la reemplaza con una nueva línea.

La segunda expresión s/([A-Z]{2}) /\1\n/busca dos letras mayúsculas seguidas de un espacio y las reemplaza con esas letras seguidas de una nueva línea.


sed --version
sed (GNU sed) 4.2.2

información relacionada