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/

相关文章:

bash - 从 bash 中的行中提取两个子字符串,然后将它们连接起来

bash - 在 Bash 中获取目录的父目录

regex - 来自文件的 Bash IP

linux - 导出在 shell 中不起作用

awk - 如何在awk中剪切

linux - 如何可靠地杀死使用 spark-submit 提交的 spark 应用程序

linux - 仅保存使用 curl 下载的最后 x MB 音频流

shell - 使用 find 和 xargs 以交互方式删除文件

bash - shell 中文件的一列中的唯一单词数

arrays - 如何在单行上打印 bash 数组的输出