linux - 需要使用户名:普通哈希:普通用户名:哈希
问题描述
文件 A 包含hash:plain
文件 B 包含username:hash
所需的输出username:plain
在 shell 中有什么方法可以做到这一点吗?
解决方案
假设文件的顺序不同,每个文件有多行,并且您希望将具有相同哈希的行配对,有几种方法:
$ 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
推荐阅读
- c# - 如何在任何游戏对象上方显示 ui 文本?
- r - 在 ggarrangeplot 中仅绘制分位数
- mongodb - MongoDB 和 API:如何防止发布不正确的数据
- php - 上传多个文件尝试只上传一个 - 调试问题
- python - 如何为 f 字符串对齐定义填充字符?
- mysql - 从 group_id IS NULL 中减去 group_id IS NOT NULL 记录的值
- graph - xy 平面中值矩阵的等高线图
- pine-script - 代码使指标仅在选定的时间范围内工作
- java - 为什么 ImageButton.onSetAlpha() 总是返回 false?
- android - 构建失败?