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

如何使用awk或sed基于值列表将文件拆分为两个部分

单趟awk实现同时输出两个拆分文件

直接修改你的原有awk逻辑,增加条件分支即可,不需要重复读取文件,一次运行就能生成两类结果:

awk 'NR == FNR {a[$1]; next} {
    if ($1 in a) {
        print > "in_list."'"$i"'
    } else {
        print > "no_in_list."'"$i"'
    }
}' "$i.list" "$i"

逻辑说明

  • 和你原有代码的前半段逻辑完全一致:先读取样本列表文件$i.list,把所有样本ID存入数组a
  • 处理主文件$i时新增分支判断:
    • 当前行第一列存在于数组a中,写入匹配成功文件in_list.$i
    • 当前行第一列不存在于数组a中,写入匹配失败文件no_in_list.$i

可选适配(主文件带表头)

如果你的主文件第一行是表头需要同时保留在两个输出文件里,用以下调整后的命令:

awk 'NR == FNR {a[$1]; next} 
FNR == 1 {
    print > "in_list."'"$i"'
    print > "no_in_list."'"$i"'
    next
}
{
    if ($1 in a) {
        print > "in_list."'"$i"'
    } else {
        print > "no_in_list."'"$i"'
    }
}' "$i.list" "$i"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:06:05