perl - 将第一个文件的第一列和第二列与第二个文件的第一列匹配
问题描述
想将第一个文件的第一列和第二列与第二个文件的第一列进行比较。
我执行以下操作:
awk 'FNR==NR{a[$1]=$2;next} ($1 in a) {print $2,$1,$3,$4}' file 1 file 2
我的脚本的结果是
3 b 33 44
2 c 44 11
5 d 12 21
我只得到了第一列的结果,它不打印重复的值。我也希望我的输出具有重复值。
文件 1
a c 0.1
a b 0.4
b d 0.1
b a 0.8
b c 0.8
c b 0.7
c a 0.6
c d 0.9
d c 0.3
文件2
b 3 33 44
c 2 44 11
d 5 12 21
预期输出:
3 b 33 44 5 d 12 21 0.1
3 b 33 44 2 c 44 11 0.8
2 c 44 11 3 b 33 44 0.7
2 c 44 11 5 d 12 21 0.9
5 d 12 21 2 c 44 11 0.3
解决方案
file2
之前的阅读file1
更实用。
$ awk 'NR==FNR {
a[$1]=($2 OFS $1 OFS $3 OFS $4)
next
}
($1 in a)&&($2 in a) {
print a[$1],a[$2],$3
}' file2 file1
3 b 33 44 5 d 12 21 0.1
3 b 33 44 2 c 44 11 0.8
2 c 44 11 3 b 33 44 0.7
2 c 44 11 5 d 12 21 0.9
5 d 12 21 2 c 44 11 0.3
推荐阅读
- google-apps-script - 来自脚本的 Google 表单,试图获取每行一个响应的 addCheckboxGridItem 选项
- c - 如何设计和实现在 C 中触发部分代码的可调度警报/事件
- python - 在虚拟环境中运行 Pyomo 时出错
- java - 解析包时出错:以编程方式从服务器下载后尝试安装 apk
- android - firebase 项目中的应用实例是什么?它是唯一用户的应用程序还是应用程序?
- javascript - 使用 selenium 抓取 javascript 内容
- java - 打包结构化 Spring 项目的最佳实践是什么?
- javascript - Angular7 应用无法在 Safari 浏览器中运行
- google-apps-script - 有什么办法可以让我向上搜索价值吗?
- javascript - 检查变量是否未定义的更好方法是什么?