如何操作和提取表中的某些数据?

如何操作和提取表中的某些数据?

我对 Linux 还很陌生。我有如下数据,它是 tbl 格式

>Feature gnl|XXX|IFEJKLFI_79
            locus_tag   IFEJKLFI_05549
            locus_tag   IFEJKLFI_05549
            protein_id  gnl|XXX|IFEJKLFI_05549

>Feature gnl|XXX|IFEJKLFI_88
            locus_tag   IFEJKLFI_05553
            locus_tag   IFEJKLFI_05553
            protein_id  gnl|XXX|IFEJKLFI_05553

我想提取 locus_tag 名称并将其与特征名称匹配。更详细地说,我希望输出看起来像这样

Feature gnl|XXX|IFEJKLFI_79     IFEJKLFI_05549
Feature gnl|XXX|IFEJKLFI_88     IFEJKLFI_05553

是否可以直接使用 awk 命令还是应该先操作数据?如果是,如何提取数据?

谢谢!!

答案1

如果每个数据块之间确实有空行,请使用任何 awk,如示例输入所示:

$ awk -v RS= '{print $1, $2, $4}' file
>Feature gnl|XXX|IFEJKLFI_79 IFEJKLFI_05549
>Feature gnl|XXX|IFEJKLFI_88 IFEJKLFI_05553

或者如果 locus_tag 行始终紧接在特征行之后,如示例输入所示:

$ awk '/^>/{feat=$0; n=0} ++n==2{print feat, $2}' file
>Feature gnl|XXX|IFEJKLFI_79 IFEJKLFI_05549
>Feature gnl|XXX|IFEJKLFI_88 IFEJKLFI_05553

或者这样:

$ awk '/^>/{feat=$0; f=1} f && $1=="locus_tag"{print feat, $2; f=0}' file
>Feature gnl|XXX|IFEJKLFI_79 IFEJKLFI_05549
>Feature gnl|XXX|IFEJKLFI_88 IFEJKLFI_05553

相关内容