如何在某个字符(在本例中为逗号)后添加恰好三个字符的换行符(在文本文件的每一行中)?

如何在某个字符(在本例中为逗号)后添加恰好三个字符的换行符(在文本文件的每一行中)?

我有一个包含国家、城市和州信息以及其他信息的文件。文件的内容如下所示:(仅与所显示问题相关的部分)

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

相关内容