python - awk 比较 2 个未排序文件中的 2 列,并在匹配后返回第 2 个文件中的特定列
问题描述
我希望将 file1 中的 col1 和 col3 与 file2 中的 col1 和 col2 进行比较。如果匹配,我想打印 file1 的 col1 和 col3 以及 file2 的 col5 和 col6。文件 1 没有标题,但文件 2 有标题。我还想根据 file1 中的顺序保留顺序
例子:
file1:
1 3 6
1 3 7
3 3 5
2 4 9
0 5 3
file2:
A B C D E F G
2 9 D 0 5 X 9
1 7 A 8 6 6 G
1 6 D 5 5 T 1
3 5 M 2 2 R 9
7 9 X 3 1 1 4
Expected result:
1 6 5 T
1 7 6 6
3 5 2 R
2 9 5 X
我试过这个:
awk -F ' ' 'FNR=NR{arr[$1$3]++;next};arr[$1$2]{print $5,$6,arr[$1,$3];}' file1 file2
它只打印 file2 的 col5 和 col6。我怎样才能得到结果。我想要它在 awk 但任何其他语言仍然可以
解决方案
你可以使用这个awk
:
awk 'FNR == NR {map[$1,$2] = $5 OFS $6; next}
($1,$3) in map {print $1, $3, map[$1,$3]}' file2 file1
1 6 5 T
1 7 6 6
3 5 2 R
2 9 5 X
推荐阅读
- c# - Linq左连接将数据添加到左对象
- android - 启动一个活动而不将其保留在后台堆栈中
- reactjs - 如何使用useState将对象添加到位于另一个数组内部的数组 - 反应原生
- tensorflow - 如何鼓励我的神经网络分类器做出不那么自信但错误的决定?
- javascript - 如何将 Outsystems OSVSTATE 令牌解析为 Jmeter 中的后续请求?
- php - 如何正确记录使用 PHP shell_exec 更改的文件?
- github - 为整个组织部署一个 SSH 密钥
- sql - 对最后一小时分组中的列值求和,然后将所有 5 的总和作为另一列中的总和
- robotframework - 如何在 Robot Framework 中使用默认为 None 的可选参数创建关键字?
- android - 获取 ImageButton 中使用的图像名称