Remplacer la première occurence
Le
BOUDOU Joseph
Salut,
Bon, le travail est déjà fini, mais j'aurais bien aimé trouver une
solution plus rapide. Il s'agissait d'ajouter un pseudo-serveur au Path
de tous les messages d'un spool (des centaines de milliers de
messages). Le truc c'est qu'il est inutile et coûteux de continuer à
parser lorsqu'on a déjà fait la substitution. Mais je n'ai pas trouvé
le moyen de ne pas le faire. Je ne retrouve pas la commande que j'ai
finalement lancée, mais ça devait être quelque chose comme :
find spool -type f -exec sed -i 's/^Path: /\1truc.muche!/' '{}' \;
--
BOUDOU Joseph <jogo@matabio.net>
Bon, le travail est déjà fini, mais j'aurais bien aimé trouver une
solution plus rapide. Il s'agissait d'ajouter un pseudo-serveur au Path
de tous les messages d'un spool (des centaines de milliers de
messages). Le truc c'est qu'il est inutile et coûteux de continuer à
parser lorsqu'on a déjà fait la substitution. Mais je n'ai pas trouvé
le moyen de ne pas le faire. Je ne retrouve pas la commande que j'ai
finalement lancée, mais ça devait être quelque chose comme :
find spool -type f -exec sed -i 's/^Path: /\1truc.muche!/' '{}' \;
--
BOUDOU Joseph <jogo@matabio.net>

Poser une question


avec une boucle et un break :
for file in `find spool -type f`;
do
if grep -l '^Path: ' "$file";
then sed -i 's/^Path: /1truc.muche!/' $file;
break;
fi;
done
Je n'ai pas testé, mais je suis sur que ça ne marche pas tel quel si les
fichiers ont des espaces dans leur nom.
--
/dev/loop
Avec sed et find à la sauce GNU,
find spool -type f -exec
sed -i -e '/^Path: (truc.muche!)?/{s//Path: truc.muche!/;q}' {} +
On peut aussi limiter la substitution aux en-têtes
sed -e '1,/^$/{ <code> }'
--
Jacques L'helgoualc'h
Avec sed et find à la sauce GNU,
find spool -type f -exec
sed -i -re '/^Path: (truc.muche!)?/{s//Path: truc.muche!/;q}' {} +
On peut aussi limiter la substitution aux en-têtes
sed -e '1,/^$/{ <code> }'
--
Jacques L'helgoualc'h