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

comment faire l'écho de $something >> file.txt sans retour chariot ?

Advertisement

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

Et si je veux ajouter une ligne sans en ajouter une nouvelle ?

Advertisement
Advertisement

Réponses (4)

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

C'est à cela que sert echo -n.

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

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

printf "%s" "$something" >> file.txt
```.
7
Advertisement
7
7
2016-12-14 07:52:48 +0000
Advertisement

Si vous utilisez la sortie de la commande, vous pouvez utiliser les xargs en combinaison avec l'écho

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
0
0
0
2017-05-11 11:41:20 +0000

tr est une autre alternative.

Si vous utilisez echo comme entrée, vous pouvez vous débarrasser de la tr -d '\n'.

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

Voici quelques tests qui montrent 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.

Advertisement

Questions connexes

11
14
6
18
9
Advertisement