Rechercher : dans
Par :

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

Dernière réponse le 5 jun 2008 à 14:05:54 sergestage, le 30 avr 2007 à 11:12:11 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Bash] Ecrire au début d'un fichier » dans :
[Python] Lire et écrire des fichiers CSV Voir LIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce sujet, mais uniquement...
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
Fichier M3U VoirFormat M3U Un fichier M3U est une playlist audio, c'est-à-dire une liste de lecture pointant vers des fichiers audio. Comment lire un fichier M3U ? Une telle liste peut être lue avec n'importe quel logiciel de lecture audio capable de lire des...

1

jipicy, le 30 avr 2007 à 11:18:57
  • +2

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

zvib, le 5 jun 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

jipicy, le 5 jun 2008 à 12:21:49
  • +1

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

 zvib, le 5 jun 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

sergestage, le 30 avr 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

jipicy, le 30 avr 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

sergestage, le 30 avr 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

jipicy, le 30 avr 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

sergestage, le 30 avr 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

jipicy, le 30 avr 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
Collection CommentÇaMarche.net