Como você apontou na sua pergunta, isso pode ser feito com o comando tr da seguinte forma:
tr ',' '\n' < infile
e aqui estão outras opções para fazer isso.
sed -e $'s/,/\\n/g' infile
Ou:
sed 's/,/\
/g' infile.txt
Ou em algumas implementações de sed , use:
sed 's/,/\n/g' infile
Ou via awk (se você não se importa com a última linha vazia):
awk -v RS=',' '1' infile
Ou em bash :
#!/bin/bash
while IFS='' read -r line; do
echo "${line//,/$'\n'}";
done < infile
Ou lendo para uma matriz e, em seguida, printf :
#!/bin/bash
while IFS=, read -a fields; do
printf "%s\n" "${fields[@]}";
done < infile
- considerando cada campo separado por vírgula como
..., 2 4, ...acima, senão você pode adicioná-lo aIFSdeIFS=','aIFS=', 'para imprimir em separado.