web-dev-qa-db-fra.com

Bash: ajouter une chaîne à la fin du fichier sans saut de ligne

Comment puis-je ajouter une chaîne à la fin du fichier sans saut de ligne?

par exemple, si j'utilise >>, cela ajoutera à la fin du fichier avec un saut de ligne:

cat list.txt
yourText1
root@Host-37:/# echo yourText2 >> list.txt
root@Host-37:/# cat list.txt
yourText1
yourText2

Je voudrais ajouter yourText2 juste après yourText1

root@Host-37:/# cat list.txt
yourText1yourText2
21
Crazy_Bash
sed '$s/$/yourText2/' list.txt > _list.txt_ && mv -- _list.txt_ list.txt

Si votre implémentation sed prend en charge l'option - i, vous pouvez utiliser:

sed -i.bck '$s/$/yourText2/' list.txt

Avec la deuxième solution, vous aurez également une sauvegarde (avec la première, vous devrez le faire manuellement).

Alternativement:

ex -sc 's/$/yourText2/|w|q' list.txt 

ou

Perl -i.bck -pe's/$/yourText2/ if eof' list.txt
6
Dimitre Radoulov

Vous pouvez utiliser le paramètre -n d'écho. Comme ça:

$ touch a.txt
$ echo -n "A" >> a.txt
$ echo -n "B" >> a.txt
$ echo -n "C" >> a.txt
$ cat a.txt
ABC

EDIT: Aha, vous aviez déjà un fichier contenant une chaîne et une nouvelle ligne. Eh bien, je vais laisser ça ici de toute façon, pourrions-nous être utiles à quelqu'un.

64
Franz

Utilisez simplement printf à la place, car il n'imprime pas la nouvelle ligne par défaut:

printf "final line" >> file

Tester

Créons un fichier, puis ajoutons une ligne supplémentaire sans nouvelle ligne de fin. Remarque J'utilise cat -vet pour voir les nouvelles lignes.

$ seq 2 > file
$ cat -vet file
1$
2$
$ printf "the end" >> file
$ cat -vet file
1$
2$
the end

Les réponses ci-dessus n'ont pas fonctionné pour moi. Publier une implémentation Python au cas où quelqu'un la trouverait utile.

python -c "txtfile = '/my/file.txt' ; f = open(txtfile, 'r') ; d = f.read().strip() ; f.close() ; d = d + 'the data to append' ; open(txtfile, 'w').write(d)"
0
Will Charlton