¿Cómo reemplazar el contenido de un archivo con una cadena que contiene nuevos caracteres de línea? - linux, bash, shell, scripting

Cuando leo "line1nline2nline3" en una cadena, como esta:

read string

line1nline2nline3

Luego haga eco de la cadena y dirija la salida a un archivo:

echo $string > text.txt

El archivo txt ahora contiene:

line1nline2nline3

¿Cómo podría hacerlo para que el archivo contenga:

line1
line2
line2

?

Gracias.

Respuestas

2 para la respuesta № 1

El problema aquí es que n no significa alimentación de línea. Solo escapa innecesariamente del valor de n.

Para hacer lo que quieres, deberías.

  1. Lee una cadena de una manera que preserve las barras diagonales inversas
  2. Expande cualquier secuencia de escape y escribe la secuencia

Puedes hacer 1. con read -r y 2. con echo -e:

read -r string
echo -e "$string"

0 para la respuesta № 2

Sólo hay que poner $string en comillas dobles:

echo "$string" > text.txt

0 para la respuesta № 3

Necesita agregar comillas dobles.

Ejemplo:

$ example=line1nline2
$ echo $example
line1nline2

Con comillas dobles:

$ example="line1nline2"
$ echo $example
line1
line2

Ahorro:

$ echo $example >> example.txt
$ cat example.txt
line1
line2

Menú