gpt4 book ai didi

linux - 如果查询文件中存在来自 Input_file 的列,则打印 "YES"以及 file_name 中表中的列作为标题

转载 作者:行者123 更新时间:2023-12-04 14:53:19 25 4
gpt4 key购买 nike

输入文件:

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

如果来自输入文件 (column1,2,3,4) 的条目出现在 file1 和 file2 中,那么输出应该有 input_file(column1,2,3,4) 和 file1 和 file2 名称作为标题和“是/否"下面到 file_name 标题

我试过了

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

最佳答案

用你展示的 sample ,尝试;请尝试以下 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

关于linux - 如果查询文件中存在来自 Input_file 的列,则打印 "YES"以及 file_name 中表中的列作为标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68634842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com