Comment puis-je ajouter le résultat d'une commande à la fin d'un fichier texte?
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
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.
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
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.
Utilisez l'opérateur >>
pour ajouter du texte à un fichier.
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
Je vous suggère de faire deux choses:
>>
dans votre script Shell pour ajouter le contenu à un fichier particulier. Le nom de fichier peut être corrigé ou en utilisant un motif.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
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
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