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 aIFS
deIFS=','
aIFS=', '
para imprimir em separado.