我想要使用file1
(它只是一个唯一的ID列表)过滤file2
中的特定字段($7
)。下面的awk
运行,但不过滤文件(它保持不变)。谢谢 :)。awk过滤另一个特定字段的文件
file1的
ACTA2
ACTC1
AGRN
file2的
Chr Start End Ref Alt Func.refGene Gene.refGene GeneDetail.refGene
chr1 977330 977330 T C intronic AGRN 0
chr1 981931 981931 A G exonic AGRN 0
chr1 982994 982994 T C exonic AGRN 0
chr1 1269554 1269554 T C exonic TAS1R3 0
chr1 1647778 1647778 C G intronic CDK11A CDK11B
chr1 1647814 1647814 T C exonic CDK11A CDK11B
期望的输出
Chr Start End Ref Alt Func.refGene Gene.refGene GeneDetail.refGene
chr1 977330 977330 T C intronic AGRN 0
chr1 981931 981931 A G exonic AGRN 0
chr1 982994 982994 T C exonic AGRN 0
AWK
awk 'NR==FNR{for (i=1;i<=NF;i++) a[$i];next} !($7 in a)' file1 FS="[ =]" file2 > output.txt
a[$i]
是用来放所有项目file1中到用于确保仅file1的使用阵列a
,NR==FNR
。在第二部分中,将FS
设置为空格或"="
,然后比较$7
中的file2
是否在此数组中,如果是,则打印它。
非常感谢你:)。我以为我需要循环通过file1迭代,但我现在看到我不是正确的,再次感谢:)。 – Chris