%20%E3%81%AE%E7%9B%B4%E5%BE%8C%E3%81%AB%E3%80%81%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%90%84%E8%A1%8C%E3%81%AB%203%20%E6%96%87%E5%AD%97%E3%81%9A%E3%81%A4%E6%94%B9%E8%A1%8C%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%E3%80%82.png)
国、都市、州の情報などを含むファイルがあります。ファイルの内容は次のようになります: (質問に関連する部分のみを表示)
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