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

Fermé
sergestage Messages postés 8 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 18 mai 2007 - 30 avril 2007 à 11:12
zvib Messages postés 62 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 27 octobre 2009 - 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 ?
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 avril 2007 à 11:18
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
zvib Messages postés 62 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 27 octobre 2009 21
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > zvib Messages postés 62 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 27 octobre 2009
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$
;-))
0
zvib Messages postés 62 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 27 octobre 2009 21 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
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
0
sergestage Messages postés 8 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 18 mai 2007
30 avril 2007 à 11:56
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
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
0
sergestage Messages postés 8 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 18 mai 2007
30 avril 2007 à 15:58
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 ???
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 avril 2007 à 15:59
Lis le post #3 ;-))
0
sergestage Messages postés 8 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 18 mai 2007 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
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 ....
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
30 avril 2007 à 16:37
Ben non je crois pas... ou alors avec "perl" peut être...
0