Você pode fazer isso com awk
:
awk '{
if(/@File_Version:/){k=$0;}
else{k=k"\n"$0}
}
/^#Name/{n=$2}
/EOD/{
print k > n".txt";
}' file
Explicação
-
if(/^@File_Version:/){k=$0;}
: se esta linha começar com@File_Version:
, salve a linha comok
. -
else{k=k"\n"$0}
: para todas as outras linhas, adicione uma nova linha (\n
) seguida da linha atual ao valor atual dek
. -
/^#Name/{n=$2}
: se esta linha começar com#Name
, defina a variáveln
para o segundo campo (o nome). -
/^EOD/{print k > n".txt";}
: se essa linha começar comEOD
, imprima a variávelk
(que agora contém o registro inteiro) em um arquivo chamadon.txt
, em quen
é o nome salvo na etapa anterior.