0

列 10 ~ 25 から始まるタブ区切りファイルがあり、一部の値に「.」が含まれています。キャラクター。「。」に一致する行を除外したい。そのため、列 10 ~ 25 で 8 回未満 (つまり、50% 未満の出現率) で見つかった場合は印刷されません。

私は同様の投稿を見てみましたが、最も近いのはユーザーによるものです:ロッジ(同じ行でパターンn回の一致行)しかし、いくつかのコマンドを試したとき、それは私がしたように動作しませんする必要があります。

たとえば、以下のコードはすべてをドットに置き換えています...これはグローバルな置換であるためであることは承知していますが、ロッジでは機能しているように見えました.

    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 
4

1 に答える 1

4

列 10 から 25 が正確に であるかどうかを確認するには.、次のようにします。

awk '{c=0; for( i = 10; i <= 25; i++ ) c += $i ~ /^\.$/;
    if( c >= 8 ) print }' input

これらの列に が含まれていることのみを気にする場合は、 and.を省略します。^$

于 2012-07-24T15:29:19.557 に答える