obtém uma variável específica usando o awk

1

Eu tenho esse file.txt

kespaul   pts/14       2001:778:200:180 Fri May 29 11:33 - 16:40  (00:07)
kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    pts/2        2001:778:200:400 Fri May 29 15:02 - 16:02  (00:00)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

e eu quero criar um novo se a hora inicial for igual a 16. Então meu resultado deve ser

kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

Eu só sei como obter valor de hora e minutos usando o awk

awk -F ' ' '{print $7}' file.txt

então eu entendo isso

11:33
16:33
15:02
16:02
    
por user3334375 29.05.2015 / 16:42

2 respostas

4

Você pode fazer correspondência de padrões em campos individuais como:

awk  '$7~/^16/ {print}' file.txt

Isso analisará o sétimo campo e verificará se ele corresponde à expressão regular ^16 , o que significa "começa com 16". Somente se corresponder a essa expressão regular, imprima a linha.

    
por 29.05.2015 / 16:46
3

Você pode selecionar linhas nas quais deseja fazer alguma coisa. No seu caso: se o campo 7 corresponde a 16: pode ser feito com:

~$ awk '$7 ~/16:/ {print}' file1.txt
kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)
    
por 29.05.2015 / 16:45

Tags