web-dev-qa-db-fra.com

Comment ajouter une sortie à la fin d'un fichier texte

Comment puis-je ajouter le résultat d'une commande à la fin d'un fichier texte?

360
vincy

Utilisez >> au lieu de > lors de la redirection de la sortie dans un fichier:

your_command >> file_to_append_to

Si file_to_append_to n'existe pas, il sera créé.

Exemple:

$ echo "hello" > file
$ echo "world" >> file
$ cat file 
hello
world
527
aioobe

Vous pouvez utiliser l'opérateur >>. Cela va ajouter les données d'une commande à la fin d'un fichier texte.

Pour tester cela, essayez de lancer:

echo "Hi this is a test" >> textfile.txt

Faites cela plusieurs fois, puis exécutez:

cat textfile.txt

Vous verrez que votre texte a été ajouté plusieurs fois au fichier textfile.txt.

68
walta

Pour append un fichier, utilisez >>

echo "hello world"  >> read.txt   
cat read.txt     
echo "hello siva" >> read.txt   
cat read.txt

alors la sortie devrait être

hello world   # from 1st echo command
hello world   # from 2nd echo command
hello siva

Pour overwrite un fichier, utilisez >

echo "hello tom" > read.txt
cat read.txt  

alors la sortie est

hello tom

56
yoctotutor.com

Utilisez command >> file_to_append_to pour ajouter un fichier.

Par exemple echo "Hello" >> testFile.txt

ATTENTION: Si vous n'utilisez qu'un seul >, vous écraserez complètement le contenu du fichier. Pour éviter que cela ne se produise, vous pouvez ajouter set -o noclobber à votre .bashrc.

Cela garantit que si vous tapez accidentellement command > file_to_append_to dans un fichier existant, il vous avertira que le fichier existe déjà. Exemple de message d'erreur: file exists: testFile.txt

Ainsi, lorsque vous utilisez >, cela vous permettra uniquement de créer un nouveau fichier et non d'écraser un fichier existant.

28
craft

Utilisez l'opérateur >> pour ajouter du texte à un fichier.

20
Nev Stokes

pour toute la question:

cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt

cela ajoutera 720 lignes (30 * 24) dans o.txt et renommera ensuite le fichier en fonction de la date actuelle.

Exécutez ce qui précède avec le cron toutes les heures ou

while :
do
    cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
    sleep 3600
done
13
jm666

Je vous suggère de faire deux choses:

  1. Utilisez >> dans votre script Shell pour ajouter le contenu à un fichier particulier. Le nom de fichier peut être corrigé ou en utilisant un motif.
  2. Configurez un cronjob horaire pour déclencher le script Shell
7
sballmer

Par exemple, votre fichier contient:

 1.  mangesh@001:~$ cat output.txt
    1
    2
    EOF

si vous voulez ajouter en fin de fichier alors ----> mémoriser les espaces entre 'texte' >> 'nomfichier'

  2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt 
    1
    2
    EOF
    somthing to append

Et pour écraser le contenu du fichier:

  3.  mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
    somthing new to write
7
Mangesh Bhapkar

Utilisation de tee avec l'option - a (--append) vous permet d’ajouter plusieurs fichiers à la fois et d’utiliser Sudo (très utile pour l’ajout de fichiers protégés) . En plus de cela, il est intéressant si vous avez besoin d’utiliser des shell autres que bash, car tous les shell ne supportent pas les opérateurs> et >>

echo "hello world" | Sudo tee -a output.txt

This thread a de bonnes réponses sur le tee

4
victortv

J'utiliserais printf au lieu de echo car c'est plus fiable et traite correctement le formatage tel que la nouvelle ligne \n.

Cet exemple produit une sortie similaire à echo dans les exemples précédents:

printf "hello world"  >> read.txt   
cat read.txt
hello world

Cependant, si vous remplaciez printf par echo dans cet exemple, echo traiterait\n comme une chaîne, ignorant ainsi l'intention

printf "hello\nworld"  >> read.txt   
cat read.txt
hello
world
1
Braden Holt