如何在某個字元(在本例中為逗號)後面加上恰好三個字元的換行符(在文字檔案的每一行中)?

如何在某個字元(在本例中為逗號)後面加上恰好三個字元的換行符(在文字檔案的每一行中)?

我有一個包含國家、城市和州資訊以及其他資訊的文件。文件的內容如下所示:(僅與所顯示問題相關的部分)

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

相關內容