【问题标题】:Linux Sort words alphabetically and make a file for each letterLinux 按字母顺序对单词进行排序并为每个字母创建一个文件
【发布时间】:2021-05-21 10:02:21
【问题描述】:

我想编写一个自动创建 26 个字典文件的 shell 脚本,其中第一个文件应包含所有以 a 或 A 开头的单词,第二个文件应包含所有以 b 或 B 开头的单词,...等等。字典文件已排序。例如,如果我有一个包含 Lime、Apple、Orange、Avacado、Apricot、Lemon 的文件。然后我想要一个新文件,其中依次包含 Apple、Apricot、Avacado、一个仅包含 Orange 的文件,以及一个包含 Lemon、Lime 的文件。

我考虑过使用排序来做这件事,所以它可能是:

sort sample.txt

但这不会将每个单词部分放入一个新文件中。所以我想到了做:

sort sample.txt > [a-z].txt

但这只会生成一个名为 [a-z].txt 的新文件

如何从文件中的单词列表中创建不同的按字母顺序排序的文件?我希望它像 a.txt、b.txt 等,每个都包含以该字母开头的所有单词。

【问题讨论】:

    标签: linux file sorting ubuntu alphabetical


    【解决方案1】:

    你可以用 awk 做到这一点:

    awk '{ print $0 >> toupper(substr($0,1,1))"_wordsfile" }' <(sort wordsfilemaster)
    

    wordsfilemaster 包含原始字典文件的地方,对文件运行排序并将输出重定向回 awk。将该行附加到通过获取该行的第一个字符生成的文件,将其转换为大写,然后附加“_wordsfile”,例如 文件被创建为 A_wordsfile 或 O_wordsfile。

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多