Esta pergunta seria mais clara se algumas linhas de access.log
fossem adicionadas como uma amostra. De qualquer forma, o comando awk imprime uma linha, independentemente do valor de $6
, então quando você conta as linhas com wc -l
, você obtém um resultado que é determinado somente pelo grep.
Se você quiser contar as linhas em que $6
está entre dois valores diferentes, você pode escrever
grep 17/Sep/2016:10 /access.log | awk '$6 > 1000000 && 2000000 > $6' | wc -l
No entanto, esse pipeline é um pouco ineficiente. Quase sempre seria preferível combiná-lo em um único comando awk como este:
awk '/17\/Sep\/2016:10/ && $6 > 1000000 && 2000000 > $6 {c++} END{print c}' access.log
Para incluir os limites que se pode fazer:
grep 18/Sep/2016:11 /access.log | awk ' $6>=1000000 && $6<=2000000' | wc -l
ou equivalentemente
awk '/18\/Sep\/2016:11/ && $6>=1000000 && $6<=2000000 {c++} END{print c}' access.log