如果类别字段不唯一,则向awk命令添加字段

如果类别字段不唯一,则向awk命令添加字段,awk,Awk,我运行了几个awk命令,需要修改第一个命令,但似乎无法获得正确的语法。基本上,列表中的ID用于搜索文件的$3,以及它们是否匹配类别字段($10)或(NF-1)=参考标准然后将基因ID或$2和RNA或$6输出到更新结果。如果只有一个参考标准,那么这是可行的,但是在LAMA4中有两个参考标准,因此我需要使用参考标准或10美元,其中t或7美元和p或9美元。我似乎无法将其纳入下面的awk。很抱歉,我写了这么长的文章,只是想把所有的细节都包括进去 列表 TTR LAMA4 DSP TTR NM_0003

我运行了几个
awk
命令,需要修改第一个命令,但似乎无法获得正确的语法。基本上,
列表
中的ID用于搜索
文件
$3
,以及它们是否匹配
类别
字段
($10)
(NF-1)
=
参考标准
然后将
基因ID
$2
RNA
$6
输出到
更新
结果。如果只有一个
参考标准
,那么这是可行的,但是在
LAMA4
中有两个
参考标准
,因此我需要使用
参考标准
10美元
,其中
t
7美元
p
9美元
。我似乎无法将其纳入下面的
awk
。很抱歉,我写了这么长的文章,只是想把所有的细节都包括进去

列表

TTR
LAMA4
DSP
TTR NM_000371.3
LAMA4 NM_001105208.1
LAMA4 NM_002290.3
DSP NM_004415.2
TTR NM_000371.3
LAMA4 NM_002290.3  (since `$10` ="reference standard" and `$7` ="t2" and `$9` ="p2", this is used)
DSP NM_004415.2
文件

#tax_id GeneID  Symbol  RSG LRG RNA t   Protein p   Category
9606    7276    TTR NG_009490.1 LRG_416 NM_000371.3 t1  NP_000362.1 p1  reference standard
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_002290.4     NP_002281.3     aligned: Selected
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_001105206.2      NP_001098676.2      aligned: Selected
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_001105207.2      NP_001098677.2      aligned: Selected
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_001105208.2      NP_001098678.1      aligned: Selected
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_001105209.2      NP_001098679.1      aligned: Selected
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_001105208.1  t1  NP_001098678.1  p1  reference standard
9606    3910    LAMA4   NG_008209.1 LRG_433 NM_002290.3 t2  NP_002281.2 p2  reference standard
9606    1832    DSP NG_008803.1 LRG_423 NM_004415.3     NP_004406.2     aligned: Selected
9606    1832    DSP NG_008803.1 LRG_423 NM_001008844.2      NP_001008844.1      aligned: Selected
9606    1832    DSP NG_008803.1 LRG_423 NM_001319034.1      NP_001305963.1      aligned: Selected
9606    1832    DSP NG_008803.1 LRG_423 NM_004415.2 t1  NP_004406.2 p1  reference standard
awk

awk 'FNR==NR{a[$0];next} $(NF-1)$NF=="referencestandard" && $3 in a{print $3, ($5~/^NM_/?$5:$6)}' list file > update
当前结果

TTR
LAMA4
DSP
TTR NM_000371.3
LAMA4 NM_001105208.1
LAMA4 NM_002290.3
DSP NM_004415.2
TTR NM_000371.3
LAMA4 NM_002290.3  (since `$10` ="reference standard" and `$7` ="t2" and `$9` ="p2", this is used)
DSP NM_004415.2
期望的结果

TTR
LAMA4
DSP
TTR NM_000371.3
LAMA4 NM_001105208.1
LAMA4 NM_002290.3
DSP NM_004415.2
TTR NM_000371.3
LAMA4 NM_002290.3  (since `$10` ="reference standard" and `$7` ="t2" and `$9` ="p2", this is used)
DSP NM_004415.2

不是很漂亮,但是

awk 'FNR==NR{a[$0];next} 
     $(NF-1)$NF=="referencestandard" && $3 in a && $7>b[$3] && $9>c[$3]{d[$3]=$3 FS $6; b[$3]=$7; c[$3]=$9}
     END{for(key in d){print d[key]}}' list file
产出:

TTR NM_000371.3
LAMA4 NM_002290.3
DSP NM_004415.2

非常感谢您的帮助:)。