awkрешение:
Предполагается, что входные файлы контакты.США
и контакты.БРАЗИЛИЯ
.
awk '/Name/{ printf "%s | %s",FILENAME,$0 }
/Gender|Age|Address/{ printf " | %s",$0; if($0~/Address/) print "" }' contacts.*
/Name/{ printf "%s | %s",FILENAME,$0 }
- захват строки с ключевым словом Name
с добавлением имени файла FILENAME
в начало результирующая строка
if($0~/Address/) print ""
- вывести разделитель записей (новую строку) после встречи строки с ключевым словом Address
Вывод:
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