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

Signaler
Messages postés
8
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
18 mai 2007
-
Messages postés
62
Date d'inscription
vendredi 7 mars 2008
Statut
Membre
Dernière intervention
27 octobre 2009
-
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 ?

3 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 849
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 ;-))
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
62
Date d'inscription
vendredi 7 mars 2008
Statut
Membre
Dernière intervention
27 octobre 2009
21
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 849 >
Messages postés
62
Date d'inscription
vendredi 7 mars 2008
Statut
Membre
Dernière intervention
27 octobre 2009

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$
;-))
Messages postés
62
Date d'inscription
vendredi 7 mars 2008
Statut
Membre
Dernière intervention
27 octobre 2009
21 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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
Messages postés
8
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
18 mai 2007

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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 849
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
Messages postés
8
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
18 mai 2007

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 ???
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 849
Lis le post #3 ;-))
Messages postés
8
Date d'inscription
lundi 2 avril 2007
Statut
Membre
Dernière intervention
18 mai 2007
>
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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 ....
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 849 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

Ben non je crois pas... ou alors avec "perl" peut être...