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

两文件按首列匹配筛选需求:输出文件1匹配成功的完整行

需求实现方案

Linux/Unix 环境命令行实现

方法1:awk 命令(无需提前排序,推荐使用)

直接执行以下命令即可得到符合要求的结果:
awk -F ':' 'NR==FNR{a[$1];next} ($1 in a)' file2 file1
参数说明:

  • -F ':' 指定file1的列分隔符为冒号,适配示例中的两列格式
  • NR==FNR{a[$1];next} 读取第一个输入文件(file2)时,将所有行内容作为键存入数组a
  • ($1 in a) 读取第二个输入文件(file1)时,判断当前行第一列是否存在于数组a中,存在则输出整行内容

方法2:join 命令(需先对文件排序)

如果习惯用join工具,可执行以下命令:
join -t ':' <(sort file1) <(sort file2)
参数说明:

  • -t ':' 指定字段分隔符为冒号
  • <(sort file1)、<(sort file2) 先对两个文件按第一列排序,满足join命令的输入要求
  • join默认输出两个文件第一列匹配的行,自动保留file1的完整两列内容

跨平台Python实现(支持Windows、Mac、Linux)

无需安装第三方依赖,直接运行以下代码即可,结果会输出到当前目录的output文件中:

# 读取file2的所有匹配键存入集合
with open("file2", "r", encoding="utf-8") as f2:
    match_keys = {line.strip() for line in f2 if line.strip()}

# 遍历file1匹配输出
with open("file1", "r", encoding="utf-8") as f1, open("output", "w", encoding="utf-8") as out_f:
    for line in f1:
        line = line.strip()
        if not line:
            continue
        current_key = line.split(":")[0]
        if current_key in match_keys:
            out_f.write(f"{line}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:24:03