You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AIX 6.x下使用AWK对比文件输出Employee.txt无匹配员工记录问题

问题根因

  1. 现有脚本的文件读取顺序和关联键设置完全反向:你当前是先读取Employee.txt存员工号,再遍历Car.txt判断匹配,输出的不匹配项自然是Car.txt的记录,和你要提取Employee中无匹配记录的需求相反。
  2. match.txt重复是因为同一个员工在Car.txt中存在多条车辆记录时,每次匹配都会打印一次对应Employee的记录,导致重复输出。

解决命令

基础版(仅区分Employee是否有匹配,无重复)

直接输出有车/无车的Employee记录,无重复内容:

awk -F"|" 'NR==FNR { car_emp[$3] = 1; next } 
{ 
    if ($1 in car_emp) {
        print $0 > "match_employee.txt"
    } else {
        print $0 > "no_match_employee.txt"
    }
}' Car.txt Employee.txt

执行后no_match_employee.txt就是你需要的3条无匹配员工记录。

关联车辆信息版(保留原match格式+去重)

如果需要保留原需求中match.txt的员工记录|车辆ID|车辆颜色格式,同时避免同一员工多条车辆记录导致的重复,可使用以下命令:

awk -F"|" 'NR==FNR {
    # 只保留每个员工的第一条车辆信息,避免重复
    if (!($3 in car_map)) {
        car_map[$3] = $1"|"$2
    }
    next
}
{
    if ($1 in car_map) {
        print $0"|"car_map[$1] > "match.txt"
    } else {
        print $0 > "no_match.txt"
    }
}' Car.txt Employee.txt

兼容说明

以上命令语法完全兼容AIX 6.x自带的原生awk,无需额外安装其他工具。

内容的提问来源于stack exchange,提问作者George Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:36:04