sed - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 12-09-2004 à 17:41:57
heu ... en remplacant ls par *
sinon je ne vois pas de dechets dans ton code.
Marsh Posté le 12-09-2004 à 19:17:02
l'options -i pour sed permet d'editer directement les fichiers. pas besoin de passer par des fichiers temporaire
Marsh Posté le 12-09-2004 à 19:20:16
freyr a écrit : l'options -i pour sed permet d'editer directement les fichiers. pas besoin de passer par des fichiers temporaire |
j'ai pas cette option ds mon man
mais si elle existe ca simplifie drolement:
sed "/regexp/d" * |
Marsh Posté le 12-09-2004 à 19:23:02
|
Marsh Posté le 12-09-2004 à 19:24:00
ok
GNU sed version 3.02 |
woody powa
Marsh Posté le 12-09-2004 à 20:08:25
freyr a écrit : l'options -i pour sed permet d'editer directement les fichiers. pas besoin de passer par des fichiers temporaire |
Fantastique, ça marche nickel :-)
Marsh Posté le 19-09-2004 à 13:10:05
Je reviens vers vous pour un chtit problème.
Je veux supprimer de mes e-mails archivés les headers suivants :
X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=0.92.6 |
Comme vous pouvez le voir, la valeur de la variable spamicity est un chiffre à virgule et six décimales.
J'ai donc fait ce script mais excepté l'affichage des echo, cela n'a aucun effet :
Code :
|
Pouvez-vous m'aider ?
Marsh Posté le 19-09-2004 à 16:27:28
|
^ = ancrage début de ligne
.* = 0 ou N caractères suivants sur la ligne
* = mouliner tous les fichiers du répertoire
Marsh Posté le 19-09-2004 à 17:38:11
>BMOTheKiller
D'accord cela marche, mais mon but est aussi d'apprendre à utiliser les regexp et donc de comprendre pourquoi cela ne fonctionne pas...
Marsh Posté le 20-09-2004 à 10:08:27
tu dois escaper ton {6} => \{6\}
et les | => \|
et les () => \(\)
Marsh Posté le 21-09-2004 à 19:53:50
>fguilleme
Terrible :-)
Mais pourquoi faut-il échapper les méta caractères "()|{}" ?
Il me semble que l'on ne doit faire cela que si l'on souhaite les considérer comme faisant partie de la chaîne à matcher, non ?
Par ailleurs, pourquoi ceci marche t il :
Code :
|
Et non cela :
Code :
|
Marsh Posté le 22-09-2004 à 11:20:49
Dans ta ligne tu utilises des double quotes.
Ça veut dire que le shell va faires ses substitutions d'abord et interpréter certains caractères.
change les en simple quotes et essaie.
sed '/^X-Bogosity: [Ham|Spam|Unsure],/d'
Marsh Posté le 22-09-2004 à 20:08:39
>fguilleme
>sed '/^X-Bogosity: [Ham|Spam|Unsure],/d'
Marche pas :-(
Marsh Posté le 23-09-2004 à 13:08:37
Essaie plutôt:
Code :
|
Les crochets sont utilisés pour les ensemble de caractères. Ta regex voulait dire "Toute ligne débutant par 'X-Bogosity: ', suivi d'un caractère parmi 'H', 'a', 'm', '|', 'S', 'p', 'U','n', 's', 'u', 'r', 'e', puis suivi d'une virgule".
Marsh Posté le 12-09-2004 à 13:09:33
Bonjour à tous,
Pour traiter une série de fichier, j'utilise ceci :
Existe t il un moyen plus élégant ?
Merci d'avance.