rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

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

sergestage, le lundi 30 avril 2007 à 11:12:11
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 ?
Configuration: Linux
Opera 9.20
Répondre à sergestage  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le lundi 30 avril 2007 à 11:18:57
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 ;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zvib, le jeudi 5 juin 2008 à 11:19:20
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
Répondre à zvib

9


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 5 juin 2008 à 12:21:49
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$
;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.
Répondre à jipicy

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 zvib, le jeudi 5 juin 2008 à 14:05:54
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
Répondre à zvib

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sergestage, le lundi 30 avril 2007 à 11:56:21
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
Répondre à sergestage

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le lundi 30 avril 2007 à 12:32:53
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
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sergestage, le lundi 30 avril 2007 à 15:58:07
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 ???
Répondre à sergestage

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le lundi 30 avril 2007 à 15:59:26
Lis le post #3 ;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sergestage, le lundi 30 avril 2007 à 16:27:51
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 ....
Répondre à sergestage

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le lundi 30 avril 2007 à 16:37:51
Ben non je crois pas... ou alors avec "perl" peut être...
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy
Logiciels pertinents trouvés dans les téléchargements
Télécharger VirtualDub 1.8.5VirtualDub - VirtualDub est un outil de capture et d'édition de vidéos pour les plateformes Windows 32-bit (98/ME/NT4/2000/XP/Vista)....Catégorie: Montage vidéo
Licence: Open Source
Télécharger MP3Tag 2.37aMP3Tag - Mp3tag est un éditeur de Métatags (ID3 tags) pour la plupart des formats audio courants. Il est capable de renommer un grand...Catégorie: Marquage (ID3)
Licence: Freeware/gratuit
Télécharger Kidz protection 1.0Kidz protection - Kidz Protection est un logiciel conçu pour tous les parents, afin de gérer l’utilisation des logiciels qui communiquent avec...Catégorie: Contrôle parental
Licence: Freeware/gratuit
Télécharger UltraVNC 1.0.2UltraVNC - UltraVNC est un programme informatique facile à utiliser capable d'afficher l'écran d'un autre ordinateur (via internet ou...Catégorie: Connexion à distance
Licence: Open Source
Plus de logiciels gratuits sur « [Bash] Ecrire au début d'un fichier »