des remplacements dans des fichiers unix - Shell/Batch - Programmation
Marsh Posté le 30-01-2008 à 11:09:25
Par exemple :
awk 'BEGIN { x[56]; x[89]; x[26255] } { if (!($0 in x)) print }' |
Le bloc BEGIN définit un hash dont les clées sont les nombres à éliminer. Par chaque ligne, on affiche la ligne seulement si elle n'est pas dans le hash.
Marsh Posté le 30-01-2008 à 13:50:50
Ou bien avec
grep -v ^56 fic_in | grep -v ^89 |grep -v ^26255 >fic_out |
L'option -v retient toutes les lignes sauf celles qui contiennent la chaine recherchée. Cette dernière commence par un accent circonflexe pour indiqué que le pattern se trouve en début de ligne.
Marsh Posté le 31-01-2008 à 18:50:22
Une autre solution inspirée de celle de matafan
awk 'NR==FNR {ex[$0]++; next} !ex[$0]' exlude.dat file_in > file_out |
Le fichier exclude.dat contient la liste des nombres à ignorer.
Jean-Pierre.
Marsh Posté le 30-01-2008 à 07:55:25
Bonjour,
Je dois effacer des nombres dans 86 fichiers .lst (c'est à dire texte). J'ai 106 nombres à effacer avec un script shell unix.
Par exemple , l'un des 86 fichiers contient:
35
56
89
25469
30258
26255
.......
et je dois effacer 56 et 89 et 26255, qui sont dans mon fichier des nombres à effacer.
Je vois bien qu'il faut faire deux boucles imbriquées mais je suis null en shell. Si quelqu'un pouvait m'aiguiller?
Merci.