Veja como está meu arquivo:
SRR008602 97 99 99 99 98 99 98 11
SRR009633 99 99 99 99 99 100 100 10
SRR022120 0 0 0 0 0 0 0 0
SRR026121 0 0 0 0 0 0 0 0
SRR008724 80 79 99 99 99 99 99 18
Eu gostaria de contar o número de linhas em que as colunas 2 a 9 têm um valor de "0". Prefiro uma awk
solução. Aqui está o que eu inventei (e funciona), mas tenho certeza de que deve haver uma maneira melhor de fazer isso:
awk '$2 == 0 && $3 == 0 && $4 == 0 && $5 == 0 && $6 == 0 && $7 == 0 && $8 == 0 && $9 == 0 {n++}; END {print n}' input.txt
BEIJO em awk:
Perl:
ou (como sugerido por Glenn Jackman) usando o módulo List::Util
Um pouco menos de digitação em awk: compare a concatenação desses campos com zeros concatenados:
Um pouco mais sucinto, desde que seus dados de entrada já estejam higienizados:
Ou seja, primeiro remova a primeira coluna separada por espaço com
cut
, depoisgrep
para linhas contendo apenas zeros e espaços, conte essas linhas.Ou, usando
grep
para fazer a contagem:Outra
awk
abordagem:Ou caso você tenha mais de 9 colunas e queira apenas marcar 2~9:
Com
grep
: