次のように9つの列を持つタブ区切りファイルがあります。
1 25555818 T 14 0 0 0 14 0:0:0:14
2 25555819 T 14 7 0 0 7 7:0:0:7
3 25555820 G 13 0 0 13 0 0:0:13:0
4 25555821 A 0 0 0 0 0 0:0:0:0
5 25555822 G 11 0 0 11 0 0:0:0:0
6 25555823 T 11 2 0 0 9 2:0:0:9
7 25555824 T 11 0 0 0 11 0:0:0:11
8 25555825 G 11 5 0 3 3 5:0:3:3
5、6、7、8列に0より大きい値が2つ以上ある行だけを維持したいと思います。したがって、上記の例で保持したい行は2、6、8行です。つまり、列5から8に0が3つ以上ある場合は、その行を削除する必要があります。
問題は、列9が列5-8をマージした結果であるため、パターンマッチングにも使用できることです。ただし、以前と同様に、パターンが3つの連続ゼロである必要はありません。 4つの値のうち0が3つ以上ある必要があります。
答え1
1つの方法は次のとおりです。
awk 'BEGIN{FS="\t"} (($5!=0)+($6!=0)+($7!=0)+($8!=0))>=2'
Cハッキングのきちんとしたバリエーションもあります。
awk -F $'\t' '(!!$5+!!$6+!!$7+!!$8)>=2'