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

sergestage Messages postés 8 Statut Membre -  
zvib Messages postés 63 Statut Membre -
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 41342 Statut Modérateur 4 896
 
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 63 Statut Membre 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
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > zvib Messages postés 63 Statut Membre
 
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 63 Statut Membre 21 > jipicy Messages postés 41342 Statut Modérateur
 
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 Statut Membre
 
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 41342 Statut Modérateur 4 896
 
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 Statut Membre
 
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 41342 Statut Modérateur 4 896
 
Lis le post #3 ;-))
0
sergestage Messages postés 8 Statut Membre > jipicy Messages postés 41342 Statut Modérateur
 
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 41342 Statut Modérateur 4 896 > jipicy Messages postés 41342 Statut Modérateur
 
Ben non je crois pas... ou alors avec "perl" peut être...
0