Procura num ficheiro por um número entre dois números específicos

0
$ cat logfile
1;1472223253;frank;12344;1472224386
2;1472223265;andrew;shop;
3;1472225515;frank;12345;1472225531
4;1472225526;joe;12344;1472225534

O que posso executar para obter linhas que contenham números entre 1472225000 e 1472226000?

3;1472225515;frank;12345;1472225531
4;1472225526;joe;12344;1472225534
    
por aswine 26.08.2016 / 19:45

1 resposta

4
awk -F';' '$2 > 1472225000 && $2 < 1472226000' < logfile

Diga ao awk para usar ponto-e-vírgula como separador de campo ( -F';' - as aspas simples impedem que o shell veja o ponto e vírgula como separador de comando; você pode usar -F\; ) e selecione linhas nas quais o campo 2 possui valores entre os que você forneceu. A ação padrão para uma linha, uma vez selecionada, é imprimi-la.

Edite para generalizar a solução para qualquer campo de qualificação para comparação:

awk -F';' '{ 
  flag=0; 
  for (i=1;i<=NF;i++) if ($i > 1472225000 && $i < 1472226000) flag=1; 
  if (flag) print
}' < logfile
    
por 26.08.2016 / 19:48