Téléchargement
illégal
Posez votre question Signaler

[Bash] Ecrire au début d'un fichier

sergestage 8Messages postés 2 avril 2007Date d'inscription - Dernière réponse le 5 juin 2008 à 14:05
Bonjour,
j'aimerai grace a un script bash écrire au début d'un fichier plusieurs ligne de texte, sans effacer la suite du fichier bien sure.
Je n'arrive pas a trouver comment faire, si quelqu'un a une idée ?
Lire la suite 

[Bash] Ecrire au début d'un fichier »

10 réponses
Réponse
+3
moins plus
Salut,
sed -i.bak '1i Le texte à insérer' fichier.txt
Exemple :
[jp@MDK tmpfs]$ cat fichier.txt
Bonjour,
j'aimerai grace a un script bash écrire au début d'un fichier plusieurs ligne de texte, sans effacer la suite du fichier bien sure.
Je n'arrive pas a trouver comment faire, si quelqu'un a une idée ?

[jp@MDK tmpfs]$ sed '1iBonjour à tous' fichier.txt
Bonjour à tous
Bonjour,
j'aimerai grace a un script bash écrire au début d'un fichier plusieurs ligne de texte, sans effacer la suite du fichier bien sure.
Je n'arrive pas a trouver comment faire, si quelqu'un a une idée ?

[jp@MDK tmpfs]$
Le "-i.bak" c'est pour créer un fichier de sauvegarde. Dans l'exemple je ne l'ai pas fait, uniquement pour produire la sortie sur l'écran ;-))
zvib- 5 juin 2008 à 11:19
Salut,
je vais pas refaire un topic parce que mon problème est vraiment proche.
Je veux écrire à la première ligne d'un fichier mais je veux écrire deux variables.
J'essaye
sed -i.bak '1i'$(echo $nbLines' '$nbWords)'' $fichier
ou
sed -i.bak '1i'$nbLines $nbWords'' $fichier
mais rien ne marche. J'ai l'erreur:
sed: impossible de lire 12: Aucun fichier ou répertoire de ce type
12 étant le deuxième argument $nbWords.

Merci d'avance
jipicy- 5 juin 2008 à 12:21
Salut,
jp@MDK:~/tmpfs ssh$ cat plop
Salut,
je vais pas refaire un topic parce que mon problème est vraiment proche.
Je veux écrire à la première ligne d'un fichier mais je veux écrire deux variables.
J'essaye
blablabla
...
...
blablabla


jp@MDK:~/tmpfs ssh$ var1="Variable1"
jp@MDK:~/tmpfs ssh$ var2="Variable2"
jp@MDK:~/tmpfs ssh$ fichier="plop"

jp@MDK:~/tmpfs ssh$ sed '1i\
'"$var1 \n$var2"'
' < <(cat $fichier)
Variable1
Variable2
Salut,
je vais pas refaire un topic parce que mon problème est vraiment proche.
Je veux écrire à la première ligne d'un fichier mais je veux écrire deux variables.
J'essaye
blablabla
...
...
blablabla


jp@MDK:~/tmpfs ssh$
;-))
zvib- 5 juin 2008 à 14:05
Merci pour faire exactement ce que je voulais, a savoir les 2 variables sur la première ligne et la réecriture dans le même fichier la commande est:
sed -i '1i\
'"$nbLines $nbWords"'
' $fichier


Merci, bonne journée
Ajouter un commentaire
Réponse
+0
moins plus
Ah ouai pas bete, j'y avais pa pensé a cette solution. Mais en fait ma version de sed n'a pas la fonction -i ;-)
Faut que je mette ca a jour merci
jipicy- 30 avril 2007 à 12:32
A ce moment là passe par un fichier temporaire :
sed '1iTexte...' < fichier.txt > fich.tmp && mv -f fich.tmp fichier.txt; rm -f fich.tmp
Ajouter un commentaire
Réponse
+0
moins plus
Bon en fait j'ai un problème ....
La Red Hat installé est tellement vieille qu'il n'y a pas de yum et les sources ne fonctionne pas ....
Donc pour sed c'est mort lol
Si quelqu'un a une autre idée sans utiliser le -i de sed ???
jipicy- 30 avril 2007 à 15:59
Lis le post #3 ;-))
sergestage- 30 avril 2007 à 16:27
mdr, dsl j'avais meme pas vu ....
Oui mais en fait c justement pour éviter de passer par un fichier temporaire que je fait ca.
Il doit surement avoir un moyen de le faire sans passer par sed avec un echo debut du fichier je sais pas ....
jipicyjipicy - 30 avril 2007 à 16:37
Ben non je crois pas... ou alors avec "perl" peut être...
Ajouter un commentaire
Ce document intitulé « [Bash] Ecrire au début d'un fichier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?