awk :
Supondo arquivos de entrada contacts.USA
e contacts.BRAZIL
.
awk '/Name/{ printf "%s | %s",FILENAME,$0 }
/Gender|Age|Address/{ printf " | %s",$0; if($0~/Address/) print "" }' contacts.*
-
/Name/{ printf "%s | %s",FILENAME,$0 }
- capturando a linha com a palavra-chaveName
, anexando o nome do arquivoFILENAME
ao início da sequência resultante -
if($0~/Address/) print ""
- imprime o separador de registro (nova linha) depois de encontrar a linha comAddress
keyword
A saída:
contacts.BRAZIL | Name:Tom Paul | Gender:Male | Age:26 | Address: Sau Paulo
contacts.USA | Name:John Due | Gender:Male | Age:21 | Address: Texas
contacts.USA | Name:Ed Mundo | Gender:Male | Age:41 | Address: California