arq.txt
name; SITE1
url; www.site1.com.br
username name;
username; usuario1
password; senha
extra;
name; SITE2
url; www.site2.com.br
username name;
username; usuario2
password; senha
extra;
name; SITE3
url; www.site3.com.br
username name;
username; usuario3
password; senha
extra;
name; SITE4
url; www.site4.com.br
username name;
username; usuario4
password; senha
extra;
code
# Cabeçalho estático.
echo 'name,url,username,'
# Separa campo/valor pelo seu delimitador padrão. (;)
while IFS=';' read field val; do
# Anexa o valor dos campos na linha referente.
[[ $field == @(name|url|username) ]] && echo -n $val',' || continue
# Salta para a próxima linha.
[[ $field == username ]] && echo
done < arq.txt
output
name,url,username,
SITE1,www.site1.com.br,usuario1,
SITE2,www.site2.com.br,usuario2,
SITE3,www.site3.com.br,usuario3,
SITE4,www.site4.com.br,usuario4,