複数のフィールドを持つ行から各フィールドに新しい行を作成し、前の行からフィールドを削除します。

複数のフィールドを持つ行から各フィールドに新しい行を作成し、前の行からフィールドを削除します。

次のファイルがあります。

elephant
kangaroo, snake, zebra
baboon
parrot, eagle, owl
...
...

各行に1つの要素しかないようにこのリストを変更したいと思います。

elephant
kangaroo
snake
zebra
baboon
parrot 
eagle
owl
...
...

awkでこれを行う方法はありますか?

ありがとう

ベストアンサー1

これはさまざまなツールを使用して簡単に実行できます。あなたの入力に応じてすべて,\ntr

$ tr ',' '\n' < file
elephant
kangaroo
 snake
 zebra
baboon
parrot
 eagle
 owl

これは余分なスペースを残しますが。

awk(GNU)では、awk次のことができます。

$ awk '{gsub(", ","\n");}1' file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl

GNUからsed

$ sed 's/, /\n/g' file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl

パールでは:

$ perl -pe 's/, /\n/g' file
elephant
kangaroo
snake
zebra
baboon
parrot
eagle
owl

おすすめ記事