Bonjour,
Je me suis concocté un petit script qui fonctionne honnêtement (en Bourne shell du moins) mais qui est plutôt tiré par les cheveux et qui par conséquent, mérite sont lot de petites retouches.
Voici la chose:
#!/bin/sh
A=/archive.ubuntu.com
read PKG
sudo apt-get update
apt-get -qq --print-uris install $PKG|sed -e 's/'\''//; s/'\''.*//'\
-e '/ubuntu.com\/u/ s#file:#wget -cNrnH -P'$A' -a'$A'/ubuntu/log_POOL\\\n http:/#'\
-e '/ubuntu.com\/m/ s#file:'$A'/medibuntu#wget -cNrnH -P'$A'/medibuntu -a'$A'/medibuntu/log_POOL\\\n http://packages.medibuntu.org#'\
-e '1i\#!/bin/sh\n'"# Packages amount:\t\t$(apt-get -qq --print-uris install $PKG|sed -n '$=')"''\
-e "1i$(sed '/^D/!d;s/^Date: ...,/# /' /var/lib/apt/lists/*ease|sed ':a;$!N;s/\n//;ta')\n"|sed '/^# /{s/UTCDescription: /\t/g;s/#/\n&/g}'\
>/tmp/apt-wget_$PKG.sh && chmod +x "/tmp/apt-wget_$PKG.sh"
Je vous invite donc à me dire en quoi par exemple je pourrais simplifier les 2 dernières actions de sed.
La première devrait pouvoir me renvoyer plus simplement le
nombre de ligne sans devoir rappeler la commande
apt-get.
Quant à la seconde, je désespère de devoir aplanir sur une seule ligne le résultat de la substitution de commande
sed '/^D/!d;s/^Date: ...,/# /' /var/lib/apt/lists/*ease par un
sed ':a;$!N;s/\n//;ta' dans un premier temps, pour la redéployer dans un second temps par un
sed '/^# /s/#/\n&/g'.
Accessoirement, j'aimerais également savoir quelle est la manière la plus seyante pour imposer à la commande
read, ou plus directement à sa variable
PKG, des conditions spécifiques telles que la longueur maximale, l'espacement unique entre chacun des motifs, etc.
En vous remerciant d'avance!
Toute remarque étant bienvenue.