94 votes

comment puis-je faire écho à $something >> file.txt sans retour de chariot ?

Quand je echo $something >> file.txt une nouvelle ligne sera ajoutée au fichier.

Que faire si je veux ajouter une ligne sans en ajouter une autre ?

110voto

Ignacio Vazquez-Abrams Points 107432

C'est ce que echo -n est pour .

44voto

Abbas Points 3737

printf est très flexible et plus portable que echo . Comme pour les implémentations C/Perl/etc, si vous ne terminez pas la chaîne de format par \n alors aucune nouvelle ligne n'est imprimée :

printf "%s" "$something" >> file.txt

7voto

zainengineer Points 171

Si vous utilisez la sortie de la commande, vous pouvez utiliser xargs en combinaison avec echo.

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts

0voto

Nic Doye Points 1

tr est une autre alternative.

Si vous utilisez echo que votre entrée, vous pouvez vous en tirer avec tr -d '\n' .

Cette technique fonctionne également lors de l'insertion de la sortie d'autres commandes (avec une seule ligne de sortie). De plus, si vous ne savez pas si les fichiers ont des fins de ligne UNIX ou DOS, vous pouvez utiliser la commande tr -d '\n\r' .

Voici quelques tests montrant que cela fonctionne.

Nouvelle ligne incluse :

something='0123456789' ; echo ${something} | wc -c
11

Nouvelle ligne UNIX :

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

Style DOS :

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

Testé avec BSD tr et GNU tr .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X