Awk: como imprimir os registros que contenham um determinado padrão?

Imagina que você tem um arquivo assim

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.

Nenhum comentário:

Postar um comentário

Insira seu comentário - O mesmo será submetido à aprovação!

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo