特定の文字(この場合はカンマ)の後に正確に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

おすすめ記事