insertion de lignes dans une collection de fichiers unix - Shell/Batch - Programmation
Marsh Posté le 21-10-2005 à 15:02:12
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?
Marsh Posté le 21-10-2005 à 15:09:47
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 |
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.
Marsh Posté le 21-10-2005 à 17:25:24
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 |
Marsh Posté le 21-10-2005 à 17:26:56
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
Marsh Posté le 21-10-2005 à 14:52:37
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?