Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
458 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  insertion de lignes dans une collection de fichiers unix

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

insertion de lignes dans une collection de fichiers unix

n°1228090
richard3
Posté le 21-10-2005 à 14:52:37  profilanswer
 

Bonjour,
Je dois insérer quatre lignes dans des fichiers texte sur une machine unix,
à partir de la ligne 89 dans chaque fichier. Je  
sais faire ça en vb mais en shell je suis sec. Quelqu'un peut-il me donner une piste?

mood
Publicité
Posté le 21-10-2005 à 14:52:37  profilanswer
 

n°1228091
Elmoricq
Modérateur
Posté le 21-10-2005 à 14:54:48  profilanswer
 

awk

n°1228101
richard3
Posté le 21-10-2005 à 15:02:12  profilanswer
 

on peut travailler sur les lignes d'un fichier texte avec awk? insérer plusieurs lignes données à un endroit donné (ex: ligne 89) de façon automatique?

n°1228113
Elmoricq
Modérateur
Posté le 21-10-2005 à 15:09:47  profilanswer
 

Il faut réécrire chaque fichier dans un fichier temporaire, puis le renommer pour écraser le fichier d'origine avec le fichier modifié.
Il n'y a pas de moyen de faire ça en une seule passe.
 
Avec awk il te suffit de faire une boucle jusqu'à ce qu'un compteur de ligne atteigne 89, puis tu insères tes quatre lignes, puis tu reprends la réécriture jusqu'à la fin du fichier.
 
Ca donne grosso modo un truc du genre :
 

#! /bin/ksh
 
awk 'BEGIN { ligne = 0 } {  
if ( ligne == 89 )  
# écrire ici les quatres lignes à ajouter
 
print $0;
ligne++; }' ton_fichier.txt > ton_fichier.txt.tmp
 
mv ton_fichier.txt.tmp ton_fichier.txt
 


 
 
Je ne t'ai donné que la base, il faut ajouter la boucle qui va bien autour du awk pour parcourir ta liste de fichiers.


Message édité par Elmoricq le 21-10-2005 à 15:10:29
n°1228274
matafan
Posté le 21-10-2005 à 17:25:24  profilanswer
 

Pas besoin de compteur, tu peux utiliser NR. Par exemple, tu veux ajouter deux lignes entre les lignes 1 et 2 :

awk 'NR == 2 { print "abc"; print "def" } { print }' ton_fichier

n°1228278
Elmoricq
Modérateur
Posté le 21-10-2005 à 17:26:56  profilanswer
 

Ah ben oui, je le cherchais y a pas longtemps et je l'ai pas trouvé, alors qu'il est juste en dessous de NF dans la manpage [:pingouino]

n°1228729
richard3
Posté le 22-10-2005 à 15:14:34  profilanswer
 

MERCI!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  insertion de lignes dans une collection de fichiers unix

 

Sujets relatifs
insertion de lignes dans une collection de fichiers unix[Résolu] Insertion de CheckBox automatique
[unix] surveiller les opérations effectuées dans un dossierChange son prompt en shell sous Unix
Problème d'insertionIterate avec une collection
Plus de sujets relatifs à : insertion de lignes dans une collection de fichiers unix


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR