awk - AWK - 匹配前 3 个字段,从同一行的两个文件中打印 $6 和 $7
问题描述
我的两个输入文件已更改,我需要匹配两个文件的前三个字段。进行匹配时,我想打印文件 1 的 $1(其中匹配的)和 $6 和 $7 以及文件二的 $6 和 $7。原始代码是一个 AWK 单行,仅匹配第一个字段。
文件 1
BSTN-SANJ BSTN SANJ 0 0 50 105910
MRFD-SANJ MRFD SANJ 0 0 40 69105
NYRK-SANJ NYRK SANJ 0 0 30 905010
SANJ-HMRD SANJ HMRD 0 0 25 69010
SANJ-NRFK SANJ NRFK 0 0 38 61506
文件2
BSTN-SANJ BSTN SANJ 0 0 45 601251
MRFD-SANJ MRFD SANJ 0 0 39 919591
NYRK-SANJ NYRK SANJ 0 0 25 690155
输出
BSTN-SANJ 50 105910 45 601251
MRFD-SANJ 40 69105 39 919591
NYRK-SANJ 30 905010 25 690155
解决方案
这会做
awk -v OFS='\t' '
{key = $1 OFS $2 OFS $3}
NR == FNR {f2[key] = $6 OFS $7; next}
key in f2 {print $1, $6, $7, f2[key]}
' file2 file1
推荐阅读
- xml - 如何在“完成”状态 Odoo 中删除/隐藏“更多”按钮内的“删除”功能
- pandas - 如何在多个条件下使用 pd.read.csv() 读取非常混乱的 .txt 文件
- regex - 我想使用正则表达式获取一些字母
- mysql - 将一列中的值与另一列中的对应值相除
- sql - 如何从平面表中提取层次结构?
- python - python图的线性不等式
- domain-driven-design - 如何避免 CQRS/DDD 命令/事件中的大量数据加载?
- python - 在 Python 脚本的帮助下,使用 Excel 表中的名称映射重命名文件夹中的文件名
- javascript - 什么是正确的方法?使用 javascript 和 mysql
- python - 使用特定角色更新 RMQ 中的用户