Bash : insertion d'une ligne dans un fichier
Johny jon
-
Lemez -
Lemez -
Bonjour à tous,
voilà je désirerai insérer une ligne tout au début d'un fichier. j'ai tenté le :
echo bonjour >> monfichier.txt
mais bien entendu, il ajoute bonjour à la fin du fichier, alors que je voudrai l'ajouter tout au debut du fichier.
Voilà si vous pouviez me renseigner je vous en serais gré :)
Merci d'avance
Johny Jon
voilà je désirerai insérer une ligne tout au début d'un fichier. j'ai tenté le :
echo bonjour >> monfichier.txt
mais bien entendu, il ajoute bonjour à la fin du fichier, alors que je voudrai l'ajouter tout au debut du fichier.
Voilà si vous pouviez me renseigner je vous en serais gré :)
Merci d'avance
Johny Jon
A voir également:
- Bash lire fichier ligne par ligne
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Partager photos en ligne - Guide
- Fichier bin - Guide
- Mètre en ligne - Guide
11 réponses
Bonjour
vieux sujet mais dans le top réponse des sujet
sed insertion d'une ligne en début de fichier
comme la réponse ne m a pas semblé claire
je me permet donc quelques explication
à toute fin utiles
explication avec l'utilisation de la commande
magique SED
sed -i "1i\Ajout de cette ligne en début de fichier\n" fichier.txt
sed = Stream EDiteur
-i = appliquer directement au fichier sans fichier temporaire
Note : -i.BAK = création d'un fichier de sauvegarde fichier.txt.BAK
" = permet l utilisation de caractère d'échappement
et l'interprétation des variables dans la chaine.
Note : l'utilisation de la ' (simple cote) désactive ces fonctions.
1=numéro de ligne avant laquelle sera inséré le texte
\ = caratere d échappement qui protège le texte qui sera inséré
évite que le premier caractère du texte ne soit interprété
comme une commande/paramètre
vieux sujet mais dans le top réponse des sujet
sed insertion d'une ligne en début de fichier
comme la réponse ne m a pas semblé claire
je me permet donc quelques explication
à toute fin utiles
explication avec l'utilisation de la commande
magique SED
sed -i "1i\Ajout de cette ligne en début de fichier\n" fichier.txt
sed = Stream EDiteur
-i = appliquer directement au fichier sans fichier temporaire
Note : -i.BAK = création d'un fichier de sauvegarde fichier.txt.BAK
" = permet l utilisation de caractère d'échappement
et l'interprétation des variables dans la chaine.
Note : l'utilisation de la ' (simple cote) désactive ces fonctions.
1=numéro de ligne avant laquelle sera inséré le texte
\ = caratere d échappement qui protège le texte qui sera inséré
évite que le premier caractère du texte ne soit interprété
comme une commande/paramètre
Salut,
Tu peux faire ça avec le filtre "sed", c'est très simple et tout c*n :
L'option "-i" de "sed -i", est là uniquement pour écrire directement dans le fichier sans passer par un fichier temporaire.
Tu peux faire ça avec le filtre "sed", c'est très simple et tout c*n :
[jp@Mandrake tmpfs]$ cat essai.txt
Bonjour à tous,
voilà je désirerai insérer une ligne tout au début d'un fichier. j'ai tenté le :
echo bonjour >> monfichier.txt
mais bien entendu, il ajoute bonjour à la fin du fichier, alors que je voudrai l'ajouter tout au debut du fichier.
Voilà si vous pouviez me renseigner je vous en serais gré :)
Merci d'avance
Johny Jon
[jp@Mandrake tmpfs]$ sed -i '1iSalut' essai.txt
[jp@Mandrake tmpfs]$ cat essai.txt
Salut
Bonjour à tous,
voilà je désirerai insérer une ligne tout au début d'un fichier. j'ai tenté le :
echo bonjour >> monfichier.txt
mais bien entendu, il ajoute bonjour à la fin du fichier, alors que je voudrai l'ajouter tout au debut du fichier.
Voilà si vous pouviez me renseigner je vous en serais gré :)
Merci d'avance
Johny Jon
[jp@Mandrake tmpfs]$
En gros pour insérer un texte avant une ligne on donne son adresse, ici la ligne 1, suivi du paramètre "i" (pour insérer).
L'option "-i" de "sed -i", est là uniquement pour écrire directement dans le fichier sans passer par un fichier temporaire.
salut,
alors j'ai tenté la commande sed comme dans ton exemple mais le résutat que j'ai ensuite dans mon fichier est :
1isalut
Bonjour,
1isalut
test pour voir
Il m'insère 1isalut entre chaque ligne. Je suis en train de voir pour modifier mais si quelqu'un a une réponse je suis preneur aussi :)
Merci à tous
alors j'ai tenté la commande sed comme dans ton exemple mais le résutat que j'ai ensuite dans mon fichier est :
1isalut
Bonjour,
1isalut
test pour voir
Il m'insère 1isalut entre chaque ligne. Je suis en train de voir pour modifier mais si quelqu'un a une réponse je suis preneur aussi :)
Merci à tous
cp monfichier.txt temp0001.tmp
echo bonjour > monfichier.txt
cat temp0001.tmp >>monfichier.txt
rm temp0001.tmp
Voici la solution finale.
Ciao
Guillaume
echo bonjour > monfichier.txt
cat temp0001.tmp >>monfichier.txt
rm temp0001.tmp
Voici la solution finale.
Ciao
Guillaume
c'est :
sed 1i"message" fichier
moi je suis emmerdé pour mettre un message au début de chaque ligne parce que sed i"message" fichier écrit le message entre chaque ligne et non au début de chaque ligne :(
sed 1i"message" fichier
moi je suis emmerdé pour mettre un message au début de chaque ligne parce que sed i"message" fichier écrit le message entre chaque ligne et non au début de chaque ligne :(
Bonjour,
À lire d'abord ;-))
Pour ton cas, en reprenant tes dires :
À lire d'abord ;-))
Pour ton cas, en reprenant tes dires :
[jp@MDK tmpfs]$ cat fich.txt c'est : sed 1i"message" fichier moi je suis emmerdé pour mettre un message au début de chaque ligne parce que sed i"message" fichier écrit le message entre chaque ligne et non au début de chaque ligne :( [jp@MDK tmpfs]$ sed 's/.*/Message &/' fich.txt Message c'est : Message sed 1i"message" fichier Message Message moi je suis emmerdé pour mettre un message au début de chaque ligne Message parce que sed i"message" fichier écrit le message Message entre chaque ligne Message et non au début de chaque ligne :( [jp@MDK tmpfs]$;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
désolé, j'ai repondu en DOS (alors que tu voulais du BASH)
bon, j'ai oublié linux (ça fais 5 ans que j'y ai pas touché)
mais en gros
ren -> pour renommer ou deplacer (mv??)
type -> cat
del -> effacer un fichier (unln, erase???)
bon, j'ai oublié linux (ça fais 5 ans que j'y ai pas touché)
mais en gros
ren -> pour renommer ou deplacer (mv??)
type -> cat
del -> effacer un fichier (unln, erase???)
de rien,
mais si tu peut mettre une solution fonctionnelle pour bash, ça pourrais aider les autres apres!
(c'est pour le futur)
et si tous marche, n'oublit pas de cloturer le post
@+
mais si tu peut mettre une solution fonctionnelle pour bash, ça pourrais aider les autres apres!
(c'est pour le futur)
et si tous marche, n'oublit pas de cloturer le post
@+
Peux-tu donner la commande exacte que tu tapes, s'il te plaît.
Affiche aussi la version de "sed" (sed -V).
Affiche aussi la version de "sed" (sed -V).
Bonjour,
Pour ajouter une ligne en début de fichier:
cp lefichier.txt temp
cat - temp <<< "Swing la bacaisse dans le fond d'la boite à bois "> lefichier.txt
...
...
...
rm temp
Moi c'est la méthode que j'utilise
Bonne chance!
Pour ajouter une ligne en début de fichier:
cp lefichier.txt temp
cat - temp <<< "Swing la bacaisse dans le fond d'la boite à bois "> lefichier.txt
...
...
...
rm temp
Moi c'est la méthode que j'utilise
Bonne chance!
N'existe-t-il pas une commande pour insérer une ligne en début de fichier sans passer par un fichier temporaire?
La reponse est :
sed -i 1i"premiere ligne" fichier.txt
Et si tu veux insérer en 8eme ligne :
sed -i 8i"premiere ligne" fichier.txt
l'option -i indique qu'il faut modifier le fichier.
Si tu ne la mets pas, ça sort le résultat sur la sortie standard (à l'écran).
Je suggère de travailler avec sed sans l'otpion -i pour préparer ton coup et puis quand tu es sur de toi ... tu finalise en ajoutant l'option -i
sed -i 1i"premiere ligne" fichier.txt
Et si tu veux insérer en 8eme ligne :
sed -i 8i"premiere ligne" fichier.txt
l'option -i indique qu'il faut modifier le fichier.
Si tu ne la mets pas, ça sort le résultat sur la sortie standard (à l'écran).
Je suggère de travailler avec sed sans l'otpion -i pour préparer ton coup et puis quand tu es sur de toi ... tu finalise en ajoutant l'option -i
salut
tu doit faire ça en 4 étapes:
si tu ne comprend pas l'astuce, demande je t'explique.
tu doit faire ça en 4 étapes:
ren monfichier.txt temp0001.tmp echo bonjour >monfichier.txt type temp0001.tmp >>monfichier.txt del temp0001.tmp
si tu ne comprend pas l'astuce, demande je t'explique.
En fait il nexiste pas de commande BASH pour insérer une ligne au debut. Par contre pour en ajouter a la fin oui.
Ce quil a fait c qu'il a copié le fichier. Il en a crée un autre et a ajouté ta ligne. Pour ensuite mettre a la fin toutes les lignes de ton premier fichier.
c clair non ? lol
A+
Guillaume
Ce quil a fait c qu'il a copié le fichier. Il en a crée un autre et a ajouté ta ligne. Pour ensuite mettre a la fin toutes les lignes de ton premier fichier.
c clair non ? lol
A+
Guillaume
sed -i '1iSalut' essai.txt devient : sed -i 1i'Salut' essai.txt
je sais que je fais un UP de plusieurs année mais moi ça viens de me servir,
Cordialement
Merciiiii
echo "mon texte" >> mon_fichier
c'est tout bisou
Dans ton cas, faut juste apprendre à lire ;-(