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

使用AWK拆分BED文件中含逗号字段的行并保留其他信息

拆分制表符文件中指定字段的逗号分隔内容并保留其他列

你需要处理一个制表符分隔的文件,将其中某字段(示例为第5列)内的逗号分隔内容拆分,每个值对应一行,同时保留该行其余所有列的信息。

原始文件内容(制表符分隔):

1	13445	rs558318514	C	G,T	1_13445
1	13453	rs568927457	T	C	1_13455
1	13483	rs554760071	G	A,C	1_13483
1	13550	rs554008981	G	A	1_13550

处理后期望结果:

1	13445	rs558318514	C	G	1_13445
1	13445	rs558318514	C	T	1_13445
1	13453	rs568927457	T	C	1_13455
1	13483	rs554760071	G	A	1_13483
1	13483	rs554760071	G	C	1_13483
1	13550	rs554008981	G	A	1_13550

解决方案:使用awk命令处理

用awk可以高效完成这个任务,命令如下:

awk -F'\t' -v OFS='\t' '{split($5, arr, ","); for (i in arr) print $1, $2, $3, $4, arr[i], $6}' input.txt > output.txt

命令说明:

  • -F'\t':指定输入的字段分隔符为制表符
  • -v OFS='\t':指定输出的字段分隔符为制表符,确保输出格式和原始文件一致
  • split($5, arr, ","):把第5列的内容按逗号拆分,将拆分后的每个值存入数组arr
  • for (i in arr):遍历数组中的每一个元素
  • print $1, $2, $3, $4, arr[i], $6:输出前4列、当前数组元素、第6列,组成新的一行

如果需要拆分的不是第5列,只需将命令中的$5替换为对应的列号,同时调整print语句中的字段顺序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:35:33