awk使用标题字段来计算字段

时间:2016-01-08 22:08:33

标签: awk

我正在尝试使用mvn verify计算标头并将其用作字段编号。我的问题有两个:

awk已接近,但我需要一些专家帮助以使其更好。谢谢你:)。

  1. awk as忽略字段标题并使用文本定义字段(有时字段5以NM_开头,其他时间是LRG_),如RefSeqGene.txt所示。我认为这是因为并非所有字段都有文本,但标题是一致的。

  2. 我只想拉出awk =“参考标准”

  3. 的行

    AWK

    $10

    面板genes.txt的示例(用于搜索RefSeqGene.txt)

    awk 'FNR==NR {E[$1]; next }$3 in E {print $3, $5}' panel_genes.txt     RefSeqGene.txt > update.txt
    

    RefSeqGene.txt的例子

    ACTA2
    BRAF
    BHLHB9
    

    所需的输出

    #tax_id GeneID  Symbol  RSG LRG RNA t   Protein p   Category
    9606    59  ACTA2   NG_011541.1     NM_001613.2     NP_001604.1     reference standard
    9606    59  ACTA2   NG_011541.1     NM_001141945.1      NP_001135417.1      reference standard
    9606    673 BRAF    NG_007873.3 LRG_299 NM_004333.4 t1  NP_004324.2 p1  reference standard
    9606    80823   BHLHB9  NG_021340.1     NM_001142524.1      NP_001135996.1      aligned
    9606    80823   BHLHB9  NG_021340.1     NM_001142525.1      NP_001135997.1      aligned
    9606    80823   BHLHB9  NG_021340.1     NM_001142526.1      NP_001135998.1      aligned
    

1 个答案:

答案 0 :(得分:2)

这个单行提供了您想要的输出:

 awk 'FNR==NR{a[$0];next}
     $(NF-1)$NF=="referencestandard" && $3 in a{print $3, ($5~/^NM_/?$5:$6)}' file1 file2
  • $(NF-1)$NF=="referencestandard"会检查您的$10
  • 如果$5NM_开头,我们会接受,否则,我们会$6
相关问题