如果查询文件中存在来自Input_file的列,请将"YES"与表中的列一起打印file_name作为标题



Input_file:

15 47123466 rs98765576 C T* 100 PASS . GT 0|0 0|0 0|0 0|0 0|0 0|0 0|0

文件1:

15 47123466 rs98765576 C T

文件2:

11 123345 rs9173547 A G

输出:

#IP_CHR   IP_POS  IP_ID   IP_REF  IP_ALT  OP_CHR  OP_POS  OP_ID   OP_REF  OP_ALT  OP_QUAL    OP_FILTER  OP_INFO file1_name file2_name
15 47123466 rs98765576 C T C T* 100 PASS . GT 0|0 0|0 0|0 0|0 0|0 0|0 0|0 YES NO

如果来自输入文件(列1,2,3,4)的条目存在于文件1&file2,那么输出应该有input_file(列1,2,3,4)和file1&文件2名称作为标题;是/否";下面的文件名标题

我试过这个

awk 'NR==FNR{firstfile[$1,$2,$4];next} ($1,$2,$4) in firstfile { print $1"t"$2"t"$3"t"$4"t"$5"t"$6"t"$7"t"FILENAME }'
giving output as 15 47123466 rs98765576 C T C T* 100 PASS . GT 0|0 0|0 0|0 0|0 0|0 0|0 0|0 file1_name

使用显示的示例,尝试;请尝试以下awk程序。

awk '
BEGIN{
s1="#IP_CHR   IP_POS  IP_ID   IP_REF  IP_ALT  OP_CHR  OP_POS  OP_ID   OP_REF  OP_ALT  OP_QUAL    OP_FILTER  OP_INFO "
}
{
key=($1 FS $2 FS $3 FS $4)
}
ARGIND<3{
arr[key]
file=(file?file OFS:"")FILENAME
next
}
FNR==1{
print s1,file
}
{
val=""
for(j in arr){
val=(val?val OFS:"")(key==j?"YES":"NO")
}
print $0,val
}
' file1 file2 input_file

相关内容

  • 没有找到相关文章