[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: apt a la mémoire longue



Julien Valroff a écrit, vendredi 29 avril 2005, à 19:29 :
> Le vendredi 29 avril 2005 à 18:54 +0200, Jacques L'helgoualc'h a écrit :
> > [script sed]
>
> J'avais trouvé dans le même genre ;-)
> Mon script supprime les _paragraphes_ contenant la ligne "Status: purge
> ok not-installed", un paragraphe étant déterminé par 2 lignes vides :

Pas  exactement, le  premier Package:  apparaît ligne  n°1 chez  moi. Je
suppose qu'un paragraphe commence par  une telle ligne, et finit par une
ligne vide (j'ai  bien une dernière ligne vide)  ; seuls les paragraphes
de quatre lignes conformes au modèle sont effacés.

> #!/bin/bash
> cd /var/lib/dpkg/
> cp status status.backup
> sed -e '/./{H;$!d;}' -e 'x;/Status: purge ok not-installed/d;' \
> status > status.new

 - tu effaces aussi un paragraphe  qui contiendrait cette chaîne dans la
   description (peu plausible :) ;

 - une dernière ligne non vide serait perdue.

 sed -e ':a;N;/\n$/!{$!b a};/\nStatus: purge ok not-installed\n/d' \
  status > status.new

> sed -e '/./,$!d' status.new > status

Des lignes  vides au  début ne sont  pas gênantes  ici --- mais  on peut
regrouper cette commande en tête du sed précédent.

> rm -f status.new
> 
> echo "Script exited with code $?."
> 
> Après exécution, le poids de mon fichier status a été réduit de 20ko
> (soit environ 3% de son poids), donc le gain n'est pas vraiment celui
> que j'aurais pu espérer...

Chez moi© c'est rentable ;)

 $ grep -c '^Package:' status_bref /tmp/supprimes /var/lib/dpkg/status
status_bref:1036
/tmp/supprimes:8245
/var/lib/dpkg/status:9281

> Merci à tous pour votre aide !

Merci à toi aussi,
-- 
Jacques L'helgoualc'h



Reply to: