Ich habe eine Datei mit Informationen zu Land, Stadt und Staat sowie anderen Informationen. Der Inhalt der Datei sieht ungefähr so aus: (nur der Teil, der sich auf die angezeigte Frage bezieht)
Some lines (rows) of text
...
United States
Memphis, TN 38116-3252
...
More lines of text
...
United States
Austin, TX 78726
...
Ich möchte beispielsweise vor der Postleitzahl oder nach TN eine neue Zeile einfügen und auch das ',' durch eine neue Zeile ersetzen. Aber ich gehe davon aus, dass der zweite Teil einfacher sein wird.
Gewünschtes Format:
Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726
...
Das Endziel besteht darin, die Daten in eine Tabelle wie diese zu importieren:
Some info | Country | State | City | Etc.
abc | United..| Texas | Austi| zcx
Ich bin offen für alles, was mit sed, awk usw. funktioniert.
Antwort1
Ich würde sed
hierfür verwenden:
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
Der erste Ausdruck s/, /\n/
sucht nach einem Komma, gefolgt von einem Leerzeichen, und ersetzt es durch eine neue Zeile.
Der zweite Ausdruck s/([A-Z]{2}) /\1\n/
sucht nach zwei beliebigen Großbuchstaben, gefolgt von einem Leerzeichen, und ersetzt diese durch diese Buchstaben, gefolgt von einem Zeilenumbruch.
sed --version
sed (GNU sed) 4.2.2