如何使用awk匹配两文件列,从file2中筛选file1对应匹配记录
awk 双文件匹配提取记录方案
需求
以file1的第一列值为匹配键,提取file2中第三列匹配该键的全部记录。
输入文件内容
file1
1 2 3 4 5
file2
apples peaches 3 apples peaches 9 oranges pears 7 apricots figs 1
预期输出
apples peaches 3 apricots figs 1
实现代码
awk ' FNR==NR {f1[$1];next} ($3 in f1) ' file1 file2 > output.txt
注:如果你的实际文件使用竖线|作为字段分隔符,可在awk后添加参数-F"|",本示例默认使用空白作为分隔符,无需额外指定
逻辑说明
- 处理第一个文件file1时,将第一列所有值存入数组
f1作为键,完成后直接跳转到下一行,不执行后续匹配逻辑 - 处理第二个文件file2时,判断当前行第三列的值是否存在于
f1的键中,匹配成功则输出整行内容 - 最终结果直接写入
output.txt文件
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

