unix sed – \ n imprime una n en lugar de una nueva línea cuando se usa sed en MaxOSX

Pregunta:

Es un problema general cuando uso sed pero \n funciona cuando lo uso fuera de sed . Este es un ejemplo de lo que obtengo con sed .

Tengo el archivo myfile con el siguiente contenido:

1 2 3 4 5

Cuando uso esto:

sed 's/ /\n/g' myfile

Entiendo esto:

1n2n3n4n5

En lugar de obtener esto:

1
2
3
4
5

¿Alguien sabe dónde está el problema?

Respuesta:

Está utilizando OSX 10.8 , por lo que su implementación sed es FreeBSD sed , no GNU sed . Entonces FreeBSD sed no interpreta \n como nueva línea.

Puedes probar:

$ sed 's/ /\'$'\n/g' myfile

$'\n/g' hace que bash interprete la cadena como expansión de escape estándar, por lo que \n se convierte a una nueva línea antes del proceso sed .

o usando tr lugar de sed :

$ tr -s ' ' '\n' < myfile

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım