web-dev-qa-db-ja.com

Linuxで任意の数のタブとスペースを単一の新しい行に置き換えますか?

非常に大きなWordリストが破損しています。おそらく、不適切なvimの終了またはメモリの枯渇が原因です。

私のWordリストのすべてを左揃えにする必要があります。しかし、今は次のようになっています。

Cat                           Dog
Soup                          Rat
Cass                          Audrey

簡単なことができますtr -d " "を次のようにします。

CatDog
SoupRat
CassAudrey

しかし、それは私が望んでいることではありません。私はこのように自分の新しい行に正しい正当化された単語が欲しい:

Cat
Dog
Soup
Rat
Cass
Audrey

左揃えと右揃えの単語を区切る空白の種類はわかりません。 tr、sed、またはawkを使用して右手の単語を保持しながら、これらのスペースをすべて取り除くにはどうすればよいですか?

(私が入力した上記のリストは、私が意味しているようには見えません。うまくいけば、質問は自明です)。

編集:

私は何が起こっているのかを理解していると思います...私は猫を使って非常に長いWordリストを調べていました。猫は、新しい情報が画面にバッファリングされるよりもはるかに速く動作します。そのため、一部の単語が右揃えで表示されているように見えました。同じファイルをvimでゆっくり調べたところ、右揃えの単語はありませんでした。

6
user2925489

etopylightはほぼ正しかった:

tr -s ' \t' '\n'

質問もタブを置き換えることを求めているからです。

基本的には、GNU sed

sed 's/\s\+/\n/g'

どうぞ...

10
thecarpy

使えるはず

sed -e 's/[[:space:]]\{1,\}/\n/'

1つ以上の空白文字(フォームフィードや垂直タブなどの奇妙なものを含む)のシーケンスを単一の改行で置き換える。

6
Ulrich Schwarz

Gnu-grepが利用可能な場合、

grep -Po '\S+'
2
JJoao

オプション-s from trを使用して、繰り返される文字を1つにまとめ、新しい行に置き換えることができます

tr -s " " "\n"
2
etopylight