filtra dados pelo valor da coluna

0

Eu quero pesquisar apenas as linhas nas quais uma coluna começa com 03: (horas), mas usando o comando abaixo, mostrando todas as linhas onde o valor contém 03 . É um exemplo de que os dados são muito grandes em um arquivo.

awk '{print $2 " " $3}' logfile | grep "03:"

Os dados:

05 00:03:12 0.05
05 00:28:03 0.05
05 00:33:12 0.09
05 03:03:12 0.09
05 03:08:12 0.05
05 03:13:12 0.05
05 03:18:12 0.05
05 03:23:12 0.027
    
por faruque 13.10.2015 / 14:26

3 respostas

3

Se houver sempre um espaço antes da hora, como nos dados de exemplo, você pode usar apenas grep :

grep " 03:" file
    
por 13.10.2015 / 14:35
1
awk '$3 ~ /^03/ {print $2 " " $3}' logfile

deve fazer o que quiser; o $ 3 ~ / ^ 03 / verifica se a terceira coluna do arquivo de entrada ($ 3) começa com (^) 03. O resto é a sintaxe de correspondência de padrões do awk (~ / pattern /). Note que isso também economiza a sobrecarga de usar o grep (1 loop em vez de 2 em termos de programação).

    
por 28.07.2016 / 17:48
-1
#awk '{print $2 " " $3}' logfile | grep "03:" | uniq -u
    
por 13.10.2015 / 14:34