特定の文字 (この場合はカンマ) の直後に、テキスト ファイルの各行に 3 文字ずつ改行を追加するにはどうすればよいでしょうか。

特定の文字 (この場合はカンマ) の直後に、テキスト ファイルの各行に 3 文字ずつ改行を追加するにはどうすればよいでしょうか。

国、都市、州の情報などを含むファイルがあります。ファイルの内容は次のようになります: (質問に関連する部分のみを表示)

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

私がやりたいのは、郵便番号の前または TN の後に改行を追加し、',' を改行に置き換えることです。しかし、2 番目の部分の方が簡単だと思います。

希望するフォーマット:

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/コンマとそれに続くスペースを検索し、改行に置き換えます。

2 番目の式は、s/([A-Z]{2}) /\1\n/スペースが続く任意の 2 つの大文字を検索し、それらの文字と改行文字に置き換えます。


sed --version
sed (GNU sed) 4.2.2

関連情報