我有一个制表符分隔的文件,其中从第 10-25 列开始,一些值包含“。” 特点。我想过滤掉与“。”匹配的行。字符,在此列的列范围内,因此如果在第 10-25 列中找到的次数少于 8 次(即出现次数少于 50%),则不会打印。
我曾尝试查看类似的帖子,最接近的是用户: lodge(在同一行中匹配具有模式 n 次的行)但是,当我尝试某些命令时,它的行为方式与我不同需要。
例如,下面的代码用点替换了所有内容......虽然我知道这是因为它是全局替换,但它似乎适用于 lodge。
awk '{ if (gsub(/./, ".") >= 8) print }' merged.vcf > test.vcf
这是我的文件的一个例子(在这个例子中我只包括第 11 列):
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT AD0062-C AD0065-C
2L 560 . T C 30.65 PASS AC=3 GT:GQ:PL . .
2L 595 . G T 61.75 PASS AC=11 GT:GQ:PL . 0/1:13:132,0,10