¿cómo hago eco de $algo >> archivo.txt sin retorno de carro?
Cuando echo $something >> file.txt
, se añadirá una nueva línea al archivo.
¿Qué pasa si quiero añadir sin una nueva línea?
Cuando echo $something >> file.txt
, se añadirá una nueva línea al archivo.
¿Qué pasa si quiero añadir sin una nueva línea?
Para eso está el echo -n
.
printf
es muy flexible y más portable que echo
. Al igual que las implementaciones de C/Perl/etc, si no se termina la cadena de formato con \n
no se imprime ninguna nueva línea:
printf "%s" "$something" >> file.txt
Si está utilizando la salida del comando, puede utilizar xargs en combinación con echo
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr
es otra alternativa.
Si está usando echo
como entrada, puede evitar el tr -d '\n'
.
Esta técnica también funciona cuando se canaliza la salida de otros comandos (con una sola línea de salida). Además, si no sabe si los archivos tienen terminaciones de línea UNIX o DOS puede utilizar tr -d '\n\r'
.
Aquí hay algunas pruebas que demuestran que esto funciona.
Nueva línea incluida:
something='0123456789' ; echo ${something} | wc -c
11
Nueva línea UNIX:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
Estilo DOS:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
Probado con BSD tr
y GNU tr
.