【问题标题】:Finding the identical lines in one sorted and one unsorted text file, keeping the order in the unsorted file在一个已排序和一个未排序的文本文件中查找相同的行,并在未排序的文件中保持顺序
【发布时间】:2021-04-16 18:06:57
【问题描述】:

我有两个文本文件,每个文件每行包含一个单词。作为参考,第一个文件包含一个有限的唯一单词列表,第二个文件是一个较长的文件,其中包含许多单词,其中许多是重复出现的。

我的目标是保留第二个文件中存在于第一个文件(单词表)中的所有单词,并删除所有其他单词。单词列表中的单词已排序,但我遇到的问题是我希望第二个文件中的单词按照它们所在的顺序排列,这是未排序的。据我所知,这不会使用“comm”命令,该命令似乎需要排序列表来查找两个文件之间的冲突。

我是否可以使用其他实用程序来实现我的目标,或者有没有办法使用 comm 按照它们在第二个文件中出现的顺序实际输出联合词?

【问题讨论】:

    标签: bash comm


    【解决方案1】:

    我可以使用其他实用程序来实现我的目标

    是的,有无穷无尽的编程语言和实用程序。通常在 linux 环境中,会编写一个awk 脚本。

    有没有办法使用 comm 以它们在第二个文件中出现的顺序实际输出联合词?

    没有。但是有join,与它一起:您可以对要保留顺序的文件的行nl -w1 编号,然后在第二个字段上编号sort,然后在第二个字段上编号join -o1.1,1.2 与排序的其他文件,然后重新sort 在行号上并用cut 删除行号 - 由于行号,原始行顺序被保留。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多