%20%D1%80%D0%BE%D0%B2%D0%BD%D0%BE%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D1%82%D1%80%D0%B8%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B0%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B0%20(%D0%B2%20%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%BC%20%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9)%3F.png)
У меня есть файл с информацией о стране, городе и штате, среди прочего. Содержимое файла выглядит примерно так: (показана только часть, относящаяся к вопросу)
Some lines (rows) of text
...
United States
Memphis, TN 38116-3252
...
More lines of text
...
United States
Austin, TX 78726
...
Я бы хотел добавить новую строку перед почтовым индексом или после TN (например), а также заменить ',' на новую строку. Но я предполагаю, что вторая часть будет проще.
Желаемый формат:
Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726
...
Конечной целью является импорт данных в электронную таблицу, например:
Some info | Country | State | City | Etc.
abc | United..| Texas | Austi| zcx
Я открыт для всего, что работает с sed, awk и т. д.
решение1
Я бы использовал sed
для этого:
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
Первое выражение s/, /\n/
ищет запятую, за которой следует пробел, и заменяет ее на новую строку.
Второе выражение s/([A-Z]{2}) /\1\n/
ищет любые две заглавные буквы, за которыми следует пробел, и заменяет их этими буквами, за которыми следует новая строка.
sed --version
sed (GNU sed) 4.2.2