【问题标题】:awk to use header field to count fieldsawk 使用标题字段来计算字段
【发布时间】:2016-01-09 06:22:24
【问题描述】:

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

awk 很接近,但我需要一些专家的帮助才能使它变得更好。谢谢你:)。

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

  2. 我只想拉$10 = "reference standard"的那一行

awk

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

panel genes.txt 示例(用于搜索 RefSeqGene.txt)

ACTA2
BRAF
BHLHB9

RefSeqGene.txt 示例

#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

期望的输出

ACTA2     NM_001613.2   
ACTA2     NM_001141945.1
BRAF      NM_004333.4

【问题讨论】:

    标签: awk


    【解决方案1】:

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

     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

    【讨论】:

    • @EdMorton 用惠普酱粘贴?顺便说一句,我google了HP酱,我看到了HP,并认为它可能是HP Unix专用工具.....:D
    猜你喜欢
    • 2013-12-22
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    相关资源
    最近更新 更多