首页 > 解决方案 > 需要使用户名:普通哈希:普通用户名:哈希

问题描述

文件 A 包含hash:plain 文件 B 包含username:hash 所需的输出username:plain 在 shell 中有什么方法可以做到这一点吗?

标签: linuxshell

解决方案


假设文件的顺序不同,每个文件有多行,并且您希望将具有相同哈希的行配对,有几种方法:

$ join -11 -22 -t: -o 2.1,1.2 <(sort -k1,1 -t: filea) <(sort -k2,2 -t: fileb)

(需要 bash、zsh、ksh93 或其他理解<()重定向的 shell)

或者

$ awk -F: -v OFS=: 'NR == FNR { hashes[$1] = $2; next }
                    $2 in hashes { print $1, hashes[$2] }' filea fileb

推荐阅读