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
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
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.
Utilisez simplement printf
à la place, car il n'imprime pas la nouvelle ligne par défaut:
printf "final line" >> file
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)"