Bonjour,
Je cherche à insérer un ligne dans un fichier mais au début, car :
insère la ligne en fin de fichier.echo "test" >> ~/fichier.txt
D'avance merci pour votre aide.
Bonjour,
Je cherche à insérer un ligne dans un fichier mais au début, car :
insère la ligne en fin de fichier.echo "test" >> ~/fichier.txt
D'avance merci pour votre aide.
Il y a pas mal de solutions avec sed, awk ou perl, mais j'aime bien celle-la:
Ajoute "Ma ligne." comme premiere ligne de newfile.txt, puis insere toto.txt a la suite. Evidemment, si tu as plusieurs lignes a ajouter, il suffit de les mettre avant le EOF.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 cat - toto.txt > newfile.txt << EOF Ma ligne. EOF
Oui, c'est une solution utile à connaitre, mais s'il souhaite modifier le fichier, ce n'est pas pratique.
En Sed :
L'option -i de Sed permet de modifier le fichier, mais elle n'est pas dispo sur certains Sed (mais celui de Gnu l'a).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sed -i '1i\ test' ~/fichier.txt
merci pour vos réponses![]()
sed correspond plus à ce que je veux faire, par contre je n'arrive pas insérer le contenu d'une variable :
sed -i '1i\
$MA_VARIABLE' ~/fichier.txt
C'est un problème de Shell et de quoting...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sed -i "1i\\ $MA_VARIABLE" ~/fichier.txt
merci mais ça ne marche pas...
Et donner des détails te ferait mal aux doigts ?
Chez moi, ça marche.
Bon... que contient ta variable ? Elle est sur plusieurs lignes ?
Si oui, il faut ajouter un \ à la fin de chaque ligne intermédiaire.
excuses moi !!![]()
résultat rien dans le fichier boot.logTEXT="BOOT le `date '+%d %B %Y'` à `date '+%H h %M'`"
sed -i "1i\\
$TEXT" /home/franck/logs/boot.log
h si ça marche !!!
excuses moi !!![]()
merci encore
Ah !
T'es tombé sur le seul cas particulier qui marche pas. Mon code marche seulement si le fichier n'est pas vide.
J'avoue ne pas comprendre : pourquoi veux-tu écrire tes logs "à l'envers" ? C'est beaucoup plus pratique à mon avis de les écrire dans l'ordre chronologique (et d'utiliser la commande tail pour voir les derniers).
Edit : ok, tant mieux. Je suppose que tu as eu le problème que je viens de citer.
ben en fait oui le fichier était bien vide !
je veux les écrire à l'envert car je les regarde à travers un navigateur...
Partager