小编use*_*489的帖子

在 Linux 中用单个新行替换任意数量的制表符和空格?

假设我有一个(可能非常大)文本文件,其中包含一个插入空格的单词列表。例如,它可能如下所示:

Cat                           Dog
Soup                          Rat
Cass                          Audrey
Run Code Online (Sandbox Code Playgroud)

我希望每个单词都在一个单独的行上(没有空格),如下所示:

Cat
Dog
Soup
Rat
Cass
Audrey
Run Code Online (Sandbox Code Playgroud)

我可以做一个简单tr -d " "的把它变成:

CatDog
SoupRat
CassAudrey
Run Code Online (Sandbox Code Playgroud)

(但这不是我想要的)。

我不知道用什么类型的空格来分隔这些单词,因此假设它是普通 ASCII 空格和制表符的某种组合。(我们可以假设没有不可见的 Unicode 字符,比如空格和零宽度的东西。)?自然,这些词不包含空格,所以?“à la”、“alma mater”、“apple pie”、“at large”和“ice cream”不是有效词。

假设单词可能包含(非空白)非字母字符,例如“AC/DC”、“add-on”、“AT&T”、“audio-visual”、“can't”、“carbon-14” 、“jack-o'-lantern”、“岳母”、“o'clock”、“O'Reilly”、“RS-232”和“3-D”。理想情况下,解决方案应该容忍非 ASCII 字符,如“Ångström”、“Gödel”、“naïve”、“resume”和“smörgåsbord”。

如何使用常见的 Unix/Linux 工具(如trsed或)在保留(和隔离)缩进单词的同时去除所有这些空格awk

如果该解决方案也适用于所述问题的更一般情况,那就太好了;即,不仅是两列文本,还有随机排列,例如:

Cat                           Dog
Soup                          Rat
Cass                          Audrey
Run Code Online (Sandbox Code Playgroud)

sed awk whitespace tr text-formatting

7
推荐指数
3
解决办法
7484
查看次数

标签 统计

awk ×1

sed ×1

text-formatting ×1

tr ×1

whitespace ×1