Note that although your printf happens to work with the data you're using, it is dangerous to assume that no characters in data you're printing will ever be interpreted as format string control characters. You might want to consider one of the following as an alternative to your current code:
BEGIN { FS = "[=;]"
}
{ for(i = 2; i <= NF; i++)
printf("%s=%s\n", $1, $i)
}
Many thanks for the warning. The solutions you have provided are elegant and will ensure data integrity.
I tested all three and the results are excellent.
Thanks for taking time off to write these little gems.