¿Por qué echo -e “ \ n ” me da dos líneas en blanco en lugar de una?
On febrero 1, 2021 by admin Digamos que hay una línea «aaaa» en file.txt, y quiero agregar SOLAMENTE UNA línea en blanco después de ella, y luego agregar una línea de texto después de la línea en blanco.
Lo hice:
echo -e «\ n» >> file.txt
echo «bbbb» >> file.txt
Y luego vi DOS en blanco líneas entre aaaa y bbbb
Cuando solo uso echo «bbbb» >> file.txt, entonces no hay una línea en blanco entre las dos líneas de texto.
¿Por qué sucede esto y cómo me deshago de él? ?
Comentarios
- Bien, permítanme resumir la respuesta correcta: \ n significa mover el cursor a la siguiente línea y no ' no significa una línea en blanco.
Responder
echo
genera la cadena que usa como argumento y luego agrega un carácter de nueva línea al final de la cadena generada para terminar la línea.
Con
echo "string"
obtienes string
y una nueva línea al final.
Por lo tanto, con
echo -e "\n"
obtendrá su nueva línea y una nueva línea al final (es decir, dos líneas vacías).
Si no desea la nueva línea adicional (es decir, para generar una línea sin terminar), use echo
con su -n
opción o, en este caso, donde solo desea insertar una línea vacía, simplemente use echo ""
o echo
sin ningún argumento.
De help echo
en bash
:
Options: -n do not append a newline -e enable interpretation of the following backslash escapes
Si desea algo que sea portátil a otros shells además de bash
, use printf
en su lugar:
printf "\n" >>file.txt printf "bbbb\n" >>file.txt
O, otra forma de hacer esas dos declaraciones con una sola redirección:
{ printf "\n" printf "bbbb\n" } >>file.txt
O simplemente
printf "\nbbbb\n" >>file.txt
Relacionado:
Comentarios
- Si hay ' s de hecho un nueva línea se agrega automáticamente a la primera línea cuando usé echo, entonces ¿por qué no obtuve una línea en blanco entre el texto en mi segundo intento (descrito en mi pregunta)?
- @OhLook En su primer intento, agrega dos líneas nuevas (una es su
\n
, el otro proviene de la nueva línea queecho
siempre agrega). En su segundo intento, simplemente agregue la cadenabbbb
con una nueva línea al final. No ' realmente no veo de dónde proviene su confusión. - @OhLook ¿Por qué habría una línea en blanco? Su archivo contendría
aaaa\nbbbb\n
dondeaaaa\n
estaba allí desde el principio ybbbb\n
estaba agregado porecho 'bbbb'
. Hacerecho -e '\n'
agregaría\n\n
al contenido existente del archivo. Si ya contieneaaaa\n
, ' obtendrásaaaa\n\n\n
. - @OhLook
\n
es un carácter de nueva línea . Mueve el cursor al inicio de la siguiente línea. Si no hubiera habido una nueva línea al final deaaaa
desde el principio, obtendríaaaaabbbb
en una sola línea al agregarbbbb
. - @OhLook
echo -e '\n'
agrega dos nuevas líneas. Ver comentario anterior. Tendría una serie de tres caracteres de nueva línea en el archivo. Eso significa, la nueva línea que es el final de la líneaaaaa
(que estaba allí desde el principio), y luego dos agregadas porecho -e '\n'
. Esto crea dos líneas vacías.
Deja una respuesta