Como "V2" é superior a 2.000 e nenhuma outra coluna é inferior a 1, o produto dessas colunas sempre será maior que cinco, dados seus dados de amostra. No entanto:
awk '($2*$3*$4) > 5 { print } NR==1 { print }' /path/to/data
Como remover registros quando a frequência de interação de três fatores dos fatores (V2 * V3 * V4) estiver abaixo de 5.
dados originais
ID V2 V3 V4
101 2012 5 1
101 2012 5 1
101 2012 5 1
101 2012 5 1
102 2010 12 2
102 2012 12 2
102 2012 12 2
102 2012 12 2
Como "V2" é superior a 2.000 e nenhuma outra coluna é inferior a 1, o produto dessas colunas sempre será maior que cinco, dados seus dados de amostra. No entanto:
awk '($2*$3*$4) > 5 { print } NR==1 { print }' /path/to/data
Eu não sei a matemática para a frequência, mas eu gosto do awk! Aqui está um script que percorre todos os registros do seu arquivo de teste e executa multiplicações nos números, e compara-os para ver se eles são menores que 5. Se menos de 5, não imprima. Caso contrário, imprima.
#!/usr/bin/awk -f
BEGIN {
print "ID V2 V3 V4 = PRODUCT";
}
{
TOTAL = int($1 * $2 * $3);
if(TOTAL < 5)
{
# Don't print
}
else
{
print $1,"",$2,"",$3,"=",TOTAL;
}
}
Como o ID pode variar para os mesmos fatores, você pode ler o arquivo duas vezes - primeiro para contar quantas vezes tem V2_V3_V4
e novamente para verificar cada linha e imprimir apenas se a contagem da primeira passagem for maior igual ou igual a n
(neste caso 5):
awk -vn=5 'NR==FNR{++z[$2"_"$3"_"$4];next};
FNR==1{print;next};z[$2"_"$3"_"$4]>=n' infile infile
Tags awk