This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HostName: Empresa1-AD1 | |
TaskName: Veracid | |
Last Result: 1 | |
Start Time: 07:00:00 | |
Start Date: 18/12/2011 | |
Power Management: No Start On Batteries, Stop On Battery Mode | |
HostName: Empresa2-AD1 | |
TaskName: Veracid-01 | |
Last Result: 0 | |
Start Time: 08:00:00 | |
Start Date: 18/12/2011 | |
Power Management: No Start On Batteries, Stop On Battery Mode | |
HostName: Empresa1-AD2 | |
TaskName: Veracid-02 | |
Last Result: 01d | |
Start Time: 18:00:00 | |
Start Date: 17/11/2011 | |
Power Management: No Start On Batteries, Stop On Battery Mode |
E deseja imprimir os blocos (Registros) em que o campo
3 "Last Result:" não termine com zero
A solução em awk fica assim
awk 'BEGIN {RS="";FS="\n"} {if ($3 ~ /[^0]$/) print $0,"\n"}' teste.txt
Explicação
BEGIN ..... preprocessamento do awk, nesta seção alteramos coisas como...
RS ........ Separador de registros o padrão é "\n"
FS ........ Separador de campos o padrão é espaço
Com a mudança acima é como se cada bloco estivesse numa horizontal e a separação dos mesmos passou a ser uma linha em branco No final jogamos um if no qual testamos através de expressões regulares se o campo $3 não termina com zero,
if ($3 ~ /[^0]$/)
e finalmente mandamos imprimir
o registro todo $0
print $0,"\n"
A impressão de uma quebra de linha "\n"
é para no caso de a saida gerar vários
registos que eles fiquem separados como no início.