web-dev-qa-db-fra.com

comment puis-je echo $ quelque chose >> fichier.txt sans retour chariot?

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

Et si je veux ajouter sans nouvelle ligne?

75
onemach

C'est ce que echo -n est pour.

89

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 formatage avec \n, aucune nouvelle ligne n'est imprimée:

printf "%s" "$something" >> file.txt
38
glenn jackman

Si vous utilisez le résultat de la commande, vous pouvez utiliser xargs en combinaison avec echo

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

tr est une autre alternative.

Si vous utilisez echo comme entrée, vous pouvez obtenir quel tr -d '\n'.

Cette technique fonctionne également lors de la canalisation 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 tr -d '\n\r'.

Voici quelques tests montrant que cela fonctionne.

Newline inclus:

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.

0
Nic Doye