Talvez tente algo assim?
awk 'BEGIN{RS="\n\n"}
{
split($1, a, "="); fname = a[2];
split($2, b, "="); lname = b[2];
split($3, c, "="); country = c[2];
if (fname != "" && lname != "" && country != "") {
command = "/path/to/your/script.sh "fname" "lname" "country;
system(command);
}
}' input_file.txt
Eu tentei substituindo /path/to/your/script
por echo
e exibi os campos na ordem correta.
Observe que, se um campo estiver faltando para um determinado primeiro nome, sobrenome, combinação de países, o comando não será executado para essa combinação específica e passará diretamente para o próximo.
Se você quiser que o comando awk saia com um código de retorno diferente de zero ao encontrar um campo vazio e não tente executar o comando nas próximas combinações, tente isto:
awk 'BEGIN{RS="\n\n"}
{
split($1, a, "="); fname = a[2];
split($2, b, "="); lname = b[2];
split($3, c, "="); country = c[2];
if (fname != "" && lname != "" && country != "") {
command = "/path/to/your/script.sh "fname" "lname" "country;
system(command);
} else {
print "error: empty field in input file !";
exit 1
}
}' input_file.txt
Em seguida, você pode testar seu código de retorno na variável $?
da shell. Se não for zero, um campo está ausente em algum dos seus arquivos de entrada e todos os comandos desse campo ausente e não foram executados.