bash - 如何查找两个列表之间的校验和匹配(但不在两个列表内)?

标签 bash shell awk scripting

我想根据带有校验和的列表查找两个文件夹之间的重复项。

使用一些 shell 脚本(一些 bashawk 或类似脚本)的解决方案是最好的。

假设对于这两个文件夹我已经生成了两个列表

[FolderA.txt]
file1 abc1
file2 abc1
file3 def5

[FolderB.txt]
file4 abc1
file5 mno2
file6 def5

现在我想知道,

  • 文件 1 与文件 4 匹配(校验和 abc1 相同)
  • 文件 2 与文件 4 匹配(校验和 abc1 相同)
  • file3 与 file6 匹配(校验和 def5 相同)

但是,我只想在文件夹之间进行匹配,而不是在一个文件夹内进行匹配。因此,我不希望 file1 和 file2 之间存在匹配。

最佳答案

你可以使用这个:

join -j2 <(sort -k2 FolderA.txt) <(sort -k2 FolderB.txt)

输出:

abc1 file1 file4
abc1 file2 file4
def5 file3 file6

如果您只需要第 2 列和第 3 列,请添加 |切-d“”-f 2-

关于bash - 如何查找两个列表之间的校验和匹配(但不在两个列表内)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455484/

相关文章:

c - 下面的 bash 程序调用做了什么?

linux - 非交互式、非登录 shell 的 ash 中有哪些初始化文件?

regex - 这个 BASH shell 脚本摘录有什么作用?

unix - awk 打印在行尾添加一个 control-m 字符

html - MySQL HTML 表中的替代颜色编码导致 shell 脚本

linux - 如何在 bash shell 中为不同的用户创建自定义提示?

c - Mac OSX - 启动 Shell 和工作目录

linux - 使用 CUT 命令时包含空格

ruby - rvm 不是函数,因为 gnome 终端将 bash 作为非登录 shell 运行?

linux - 需要 Shell 脚本来查找此模式