スペースが挿入された単語のリストを含む(潜在的に非常に大きい)テキストファイルがあるとしましょう。たとえば、次のようになります。
Cat Dog
Soup Rat
Cass Audrey
次のように、各単語をスペースなしで別々の行に表示したいと思います。
Cat
Dog
Soup
Rat
Cass
Audrey
簡単にtr -d " "
次のように変更できます。
CatDog
SoupRat
CassAudrey
(しかしそれは私が望むものではありません。)
どのタイプのスペースがこの単語を区別するのかわからないため、通常のASCIIスペースとタブの組み合わせであるとします。 (全幅スペースやゼロ幅などの見えないUnicode文字はないと仮定できます。)当然、これらの単語は存在しません。含む空白なので、「à la」、「alma mater」、「appleie」、「at free」、「icecream」は有効な単語ではありません。
単語に「AC/DC」、「add-on」、「AT&T」、「audio-video」、「can't」、「carbon-14」などのアルファベット以外の文字(スペースではない)を含めることができる仮定します。 , "jack-o'-lantern" ", "義母", "o'clock", "O'Reilly", "RS-232", "3-D". 理想的には、ソリューションは "Ångström", "Gödel" 、「naïve」、「résumé」、「smörgåsbord」などの非ASCII文字を許可する必要があります。
tr
sed
などの一般的なUnix / Linuxツールを使用したり、インデントされた単語を保持(および分離)しながらこれらのスペースをすべて削除するにはどうすればよいですかawk
?
この解決策が言及されている問題のより一般的な場合でも効果がある場合は良いでしょう。つまり、2つのテキスト列だけでなく、次のランダムな配列にも適用されます。
Once upon
a midnight
dreary
while I pondered
weak and weary
Over many
a quaint and curious volume
of forgotten lore
ベストアンサー1
etopylightはほぼ正しいです。
tr -s ' \t' '\n'
質問では、タブの交換も要求するからです。