Мне было бы приятно увидеть, как выглядят ваши реальные данные, но, учитывая, что ваш вывод показывает 4 поля, а ваш ввод показывает 4 поля, вот основная идея.
awk 'BEGIN {
RS="" # make blank line between sets of data the RecordSep
FS="\n" # make each line as a field in the rec (like $1, $2 ...)
}
{ # this is the main loop, each record set is procssed here
printf("<xml>\n\t<name>%s</name>\n\t<surname>%s</surname>\n\t<Addr1>%s</Addr1>\n\t<Addr2>%s</Addr2>\n</xml>",
$1, $2, $3, $4 )
} ' 1.txt > 1.xml
Примечание: там должно бытьбыть только 1 пустым, как между вашими наборами записей.
Надеюсь, это поможет.
PS, как вы, кажется, новый пользователь, если вы получите ответ, который поможет вам, пожалуйста, не забудьте пометить егокак принято, или дайте ему + (или -) в качестве полезного ответа.