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

如何使用Python或Bash合并指定的两个制表符分隔文件?

问题描述

现有两个制表符分隔文件:
**文件1(file1.txt)**内容:

a       1       2       3
b       6       7       8
c       9       0       9

**文件2(file2.txt)**内容:

a_rna_1 r       r       x
a_rna_2 q       q       d
a_rna_3 c       c       c
b_rna_1 e       e       e
c_rna_1 a       a       g

需要将它们合并为以下格式:

a       1       2       3       a_rna_1 r       r       x
a       1       2       3       a_rna_2 q       q       d
a       1       2       3       a_rna_3 c       c       c
b       6       7       8       b_rna_1 e       e       e
c       9       0       9       c_rna_1 a       a       g

是否存在自动实现该合并的方法?

自动合并方法

可以用awk工具实现,核心逻辑是通过文件2第一列的前缀(如a_rna_1的前缀为a)关联文件1对应的行,然后拼接输出。

执行以下命令即可完成合并:

awk 'BEGIN{FS=OFS="\t"} NR==FNR{map[$1]=$0;next} {prefix=$1;sub(/_rna_.*/,"",prefix);print map[prefix],$0}' file1.txt file2.txt

命令解释

  • BEGIN{FS=OFS="\t"}:设置输入和输出的分隔符为制表符,保证格式一致
  • NR==FNR{map[$1]=$0;next}:处理第一个文件(file1.txt),将每行内容存入数组map,键为第一列的值(如a、b)
  • prefix=$1;sub(/_rna_.*/,"",prefix):处理第二个文件时,提取第一列的前缀(去掉_rna_及后面的内容)
  • print map[prefix],$0:将文件1中对应前缀的行与文件2当前行拼接输出

如果文件2第一列的前缀规则有变化(比如后缀不是_rna_),只需调整sub函数中的正则表达式即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:02:48