¿Reemplazar la coma con una nueva línea en sed en MacOS?

Resuelto WildBill asked hace 12 años • 14 respuestas

Tengo un archivo de cadenas separadas por comas. Estoy intentando reemplazar las comas con una nueva línea. He intentado:

sed 's/,/\n/g' file

Pero no está funcionando. ¿Qué me estoy perdiendo?

WildBill avatar May 25 '12 11:05 WildBill
Aceptado

Utilice tren su lugar:

tr , '\n' < file
Prince John Wesley avatar May 25 '2012 16:05 Prince John Wesley

Utilice una cadena entre comillas ANSI-C $'string'

Necesita una nueva línea literal con barra invertida para llegar a sed. Al menos en bash, $''las cadenas se reemplazarán \ncon una nueva línea real, pero luego tendrás que duplicar la barra invertida que verá sed para escapar de la nueva línea, por ejemplo

echo "a,b" | sed -e $'s/,/\\\n/g'

Tenga en cuenta que esto no funcionará en todos los shells , pero funcionará en los más comunes.

Walter Mundt avatar Aug 23 '2013 19:08 Walter Mundt
sed 's/,/\
/g'

Funciona en Mac OS X.

Max Nanasy avatar Sep 07 '2012 20:09 Max Nanasy

Si su uso de sed tiende a ser completamente expresiones de sustitución (como tiende a ser el mío), también puede usar perl -peen su lugar

$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz
nar8789 avatar Apr 15 '2014 23:04 nar8789