Use awk
da seguinte forma:
$ echo '*EXTRA File 78223 C:\foo.pdf' | awk '$3 > 1048576 {print $0;}'
$ echo '*EXTRA File 78223 C:\foo.pdf' | awk '$3 > 40000 {print $0;}'
*EXTRA File 78223 C:\foo.pdf
Isso se refere a outra pergunta:
Eu gostaria de analisar a saída de um comando (ou catar um arquivo de log) e encontrar um valor de string, convertê-lo em um inteiro e então ver se esse valor inteiro é maior do que um dado inteiro.
Por exemplo, dada a linha:
*EXTRA File 78223 C:\_Google.Enterprise.Contract.2010-06-01.pdf
Gostaria de comparar '78223' a '10485760'. Isso é possível com grep ou sed?
Obrigado!
Além disso - se você estiver usando um território Unix-like (como UnxUtils ou Cygwin, se estiver no Windows), você pode usar find
com o parâmetro -size
para obter sua lista de arquivos diretamente e canalize para xargs e faça o que estiver tentando fazer com os arquivos selecionados.
A resposta geral à sua pergunta (comparações interessantes e outras operações) é de fato awk ou bash (com bc) ou perl - mas o cenário específico se presta a find
.
Em puro Bash:
while read -r _ _ size _; do ((size > 10485760)) && echo "hit"; done < foo.log
Perl pode ser usado de forma semelhante ao awk:
echo '*EXTRA File 78223 C:\foo.pdf' | perl -ane 'print if $F[2] > 40000'