gpt4 book ai didi

linux - 通过拆分特定列值来重复行

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:42 24 4
gpt4 key购买 nike

伙计们,我有一个这样的文件:

Sequence ID TFBS_ID Binding sequence    TF_family   TF ID
CaCLV3_1 TFmatrixID_0009 taaaTTATTt AT-Hook AT4G35390
CaCLV3_1 TFmatrixID_0009 aAATAAatat AT-Hook AT4G35390
CaCLV3_1 TFmatrixID_0022 atcGGTAAct Trihelix AT5G28300
CaCLV3_1 TFmatrixID_0025 tcAATCAatt Homeodomain;bZIP;HD-ZIP AT3G61890

我想通过拆分 TF_family 列来重复整行,该列包含多个由“;”分隔的单一家族我想要这样的输出,任何帮助:

Sequence ID TFBS_ID Binding sequence    TF_family   TF ID
CaCLV3_1 TFmatrixID_0009 taaaTTATTt AT-Hook AT4G35390
CaCLV3_1 TFmatrixID_0009 aAATAAatat AT-Hook AT4G35390
CaCLV3_1 TFmatrixID_0022 atcGGTAAct Trihelix AT5G28300
CaCLV3_1 TFmatrixID_0025 tcAATCAatt Homeodomain AT3G61890
CaCLV3_1 TFmatrixID_0025 tcAATCAatt bZIP AT3G61890
CaCLV3_1 TFmatrixID_0025 tcAATCAatt HD-ZIP AT3G61890

最佳答案

awk 方法:

awk 'NR==1{print}NR>1{split($4,a,";"); for(i=1;i<=length(a);i++){$4=a[i]; print $0}}' file

输出:

Sequence ID TFBS_ID Binding sequence    TF_family   TF ID
CaCLV3_1 TFmatrixID_0009 taaaTTATTt AT-Hook AT4G35390
CaCLV3_1 TFmatrixID_0009 aAATAAatat AT-Hook AT4G35390
CaCLV3_1 TFmatrixID_0022 atcGGTAAct Trihelix AT5G28300
CaCLV3_1 TFmatrixID_0025 tcAATCAatt Homeodomain AT3G61890
CaCLV3_1 TFmatrixID_0025 tcAATCAatt bZIP AT3G61890
CaCLV3_1 TFmatrixID_0025 tcAATCAatt HD-ZIP AT3G61890

  • NR==1{print} - 按原样打印第一行

  • split($4,a,";") - 将第 4 个字段拆分为 ;

  • for(i=1;i<=length(a);i++){$4=a[i]; print $0} - 为每个子值重复当前记录

关于linux - 通过拆分特定列值来重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44040405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com