2012-01-30 7 views
0

Je suis dans un env unix et je dois ajouter ci-dessous le contenu dans un fichier txt sans démarrer à une nouvelle ligne: le contenu est:Comment ajouter le contenu dans un fichier txt

set value = 9.0.1.3 || set var = 12.4 

le fichier txt le contenu est:

echo on 
set name = 'charlie' || 

mais quand j'utilise la commande « cat », je peux ajouter le contenu dans le fichier txt, mais le contenu commencera à partir d'une nouvelle ligne, comme ceci:

echo on 
set name = 'charlie' || 
set value = 9.0.1.3 || set var = 12.4 
bien

, mon but est de le faire comme ceci:

echo on 
set name = 'charlie' || set value = 9.0.1.3 || set var = 12.4 

Quelle commande dois-je utiliser pour atteindre mon objectif? THX.

+0

[Cochez cette] [1] [1]: http://stackoverflow.com/ questions/602921/what-unix-command-peut-nous-utiliser-pour-append-un-text-to-a-specific-line-in-a-file – ndalama

+0

Thx, appréciez-le beaucoup. – CharlieShi

+0

Cela fait exactement ce que vous cherchez: http://stackoverflow.com/questions/3936738/bash-cat-multiple-files-content-in-to-single-string-without-newlines – Dawood

Répondre

0
sed -i '$s/$/ set value = 9.0.1.3 || set var = 12.4/' FILE 

Ce édite inplace FILE (par -i, si vous avez besoin d'une sauvegarde, utilisez -i.BACKUPEXTENSION). Le 1er $ après le ' adresses la dernière ligne, puis s substituer le $ vide sur elle à la fin de la ligne avec votre chaîne.

Si cela doit se faire sur une autre ligne (s) que le dernier, vous pouvez vous adresser la commande s de ubstitute avec les numéros de ligne, regex, etc.

0

Par défaut cat ne met pas toute nouvelle charecter ligne dans la fin du fichier. Si vous avez déjà un caractère de retour à la ligne à la fin du fichier, cela sera concaténé.

>echo "TTTT\c">test1 
>echo "GGGG\c">test2 
>cat test1 test2 
TTTTGGGG> 

S'il vous plaît supprimer le caractère de nouvelle ligne à la fin de votre fichier, puis exécutez la commande cat.

Vous pouvez supprimer le caractère de nouvelle ligne à la fin du fichier en utilisant la commande ci-dessous:

awk 'BEGIN{flag=0}{if(flag==1)print a;flag=1;a=$0}END{printf("%s",a)}' FILE_NAME >FILE_NAME 
Questions connexes