使用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列的内容按逗号拆分,将拆分后的每个值存入数组arrfor (i in arr):遍历数组中的每一个元素print $1, $2, $3, $4, arr[i], $6:输出前4列、当前数组元素、第6列,组成新的一行
如果需要拆分的不是第5列,只需将命令中的$5替换为对应的列号,同时调整print语句中的字段顺序即可。
内容的提问来源于stack exchange,提问作者DaN
相关产品推荐
相关产品推荐

