2012-03-01 08:25:33 +0000 2012-03-01 08:25:33 +0000
84
84

¿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?

Respuestas (4)

98
98
98
2012-03-01 08:28:15 +0000

Para eso está el echo -n .

42
42
42
2012-03-01 14:42:29 +0000

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
7
7
7
2016-12-14 07:52:48 +0000

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
0
0
0
2017-05-11 11:41:20 +0000

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.