我有两个文本文件:
File-1:
PRKCZ
TNFRSF14
PRDM16
MTHFR File-2(包含两个制表符分隔的列):
atherosclerosis GRAB1|PRKCZ|TTN
cardiomyopathy,hypercholesterolemia PRKCZ|MTHFR
Pulmonary arterial hypertension,arrhythmia PRDM16|APOE|GATA4 现在,对于File-1中的每个名称,还要打印匹配的File-2中相应的疾病名称。因此,输出将是:
PRKCZ atherosclerosis,cardiomyopathy,hypercholesterolemia
PRDM16 Pulmonary arterial hypertension,arrhythmia
MTHFR cardiomyopathy,hypercholesterolemia 我试过下面的代码:
$ awk '{k=$1}
NR==FNR{if(NR>1)a[k]=","b"="$1";else{a[k]="";b=$1}next}
k in a{print $0a[k]}' File1 File2但是我没有得到想要的输出。有谁能纠正/帮助我吗?
发布于 2016-05-14 04:30:40
您可以使用以下awk脚本执行此操作:
script.awk
BEGIN { FS="[\t]" }
NR==FNR { split($2, tmp, "|")
for( ind in tmp ) {
name = tmp[ ind ]
if (name in disease) { disease[ name ] = disease[ name ] "," $1 }
else { disease[ name ] = $1 }
}
next
}
{ if( $1 in disease) print $1, disease[ $1 ] }像这样使用它(注意第一个File-2)。
说明:
当为第一个参数( separator.
BEGIN块时,NR == FNR块设置选项卡(File-2):它读取带有名称的疾病,拆分名称,然后将疾病附加到字典中的每个名称下File-1)仅执行最后一个块(由于前一个块中的next ):它输出存储在名称(取自separator.https://stackoverflow.com/questions/37218609
复制相似问题