Você pode usar awk
para essa conversão:
$ awk -F' : ' 'BEGIN { print "Name,Age,Country,Sport"; OFS="," }
/^\*+$/ && NR>1 { print a["Name"], a["Age"], a["Country"], a["Sport"];
delete a; next}
{ a[$1]=$2} ' file.rec
Onde :
é usado como separador de campos de entrada, ,
é definido como separador de campos de saída, a matriz associativa a
é usada para armazenar temporariamente os valores, a expressão regular ^\*+$
é usada para reconhecer o registro separando linhas, um registro completo é impresso somente após a segunda linha de separação (ou seja, se o número de registros for maior que 1) e após cada registro a matriz é limpa.
As variáveis $1
e $2
referenciam a chave e o valor na entrada. A instrução next
avança diretamente o processamento para a próxima linha.
As chaves não existentes na matriz associativa resultam em sequências vazias - o que corresponde à pergunta.