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!/' '{}' \;
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DeVice
BOUDOU Joseph a écrit :
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!/' '{}' ;
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
BOUDOU Joseph a écrit :
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!/' '{}' ;
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.
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!/' '{}' ;
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
Jacques L'helgoualc'h
Le 06-10-2010, BOUDOU Joseph a écrit :
[...] 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!/' '{}' ;
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
Le 06-10-2010, BOUDOU Joseph <jogo@matabio.net> a écrit :
[...] 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!/' '{}' ;
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
[...] 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!/' '{}' ;
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
Jacques L'helgoualc'h
Le 06-10-2010, BOUDOU Joseph a écrit :
[...] 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!/' '{}' ;
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
Le 06-10-2010, BOUDOU Joseph <jogo@matabio.net> a écrit :
[...] 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!/' '{}' ;
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
[...] 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!/' '{}' ;
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