Un cas de système à headers manquant :
./viewtopic.php?pid=22029186#p22029186
[center]= =[/center]
Je n'ai jamais rien compris au man d'awk.
Je n'ai pas trouvé ce qu'apportait ici OFS='\t'
man awk
OFS inserted between fields on output, initially = " ".
à part contrarier l'alignement des colonnes.
Pour saisir, par contre, l'intérêt de
sort -k3,3V il faut le tester non pas sur vos systèmes bien entretenus, mais sur un fichier compilant les embrouilles.
(*)
Et là - ô miracle ! - les numéros de version paraissent dans l'ordre
ii linux-headers-4.4.0-14-generic 4.4.0-14.999 amd64
ii linux-headers-4.4.0-90-generic 4.4.0-90.999 amd64
iU linux-image-extra-4.4.0-142-generic 4.4.0-140.168 amd64
iF linux-image-4.4.0-142-generic 4.4.0-142.168 amd64
ii linux-tools-euclid 4.4.0.9029.30 amd64
ii linux-modules-4.15.0-43-generic 4.15.0-43.46 amd64
À première vue, du moins.
Parce qu'en réalité, l'option -V de sort
traite les 0. après les 0- ! Donc sépare des paquets ayant le même numéro de version :
echo; cat noyaux_test.txt | awk '{print $1,$2,$3,$4}' | sort -k3,3V | column -s" " -t
ii binutils-x86-64-linux-gnu 2.30-21ubuntu1~18.04 amd64
ii linux-headers-3.13.0-53 3.13.0-53.89 all
ii linux-headers-3.13.0-150 3.13.0-150.99 all
ii linux-headers-4.4.0-14-generic 4.4.0-14.999 amd64
ii linux-headers-4.4.0-90-generic 4.4.0-90.999 amd64
iU linux-image-extra-4.4.0-142-generic 4.4.0-140.168 amd64
iF linux-image-4.4.0-142-generic 4.4.0-142.168 amd64
ii linux-headers-4.4.0-142 4.4.0-142.168 all
ii linux-headers-4.4.0-142-generic 4.4.0-142.168 amd64
ii linux-tools-common 4.4.0-142.168 all
iU linux-image-extra-4.4.0-142-generic 4.4.0-142.168 amd64
iU linux-signed-image-4.4.0-142-generic 4.4.0-142.168 amd64
ii linux-tools-4.4.0-9029-euclid 4.4.0-9029.31 amd64
### Et hop, le tri redémarre à partir de "0." :
ii linux-image-machin 4.4.0.43.45 amd64
ii linux-tools-truc 4.4.0.43.45 amd64
iU linux-signed-image-generic 4.4.0.140.148 amd64
ii linux-headers-generic 4.4.0.142.148 amd64
iU linux-generic 4.4.0.142.148 amd64
iU linux-image-generic 4.4.0.142.148 amd64
iU linux-signed-generic 4.4.0.142.148 amd64
iU linux-signed-image-generic 4.4.0.142.148 amd64
rc linux-signed-nawak-en-r-c 4.4.0.142.148 amd64
ii linux-tools-euclid 4.4.0.9029.30 amd64
ii linux-modules-4.15.0-43-generic 4.15.0-43.46 amd64
ii linux-modules-extra-4.15.0-43-generic 4.15.0-43.46 amd64
Et ça, dans les méthodes de dénoyautage, ce serait un fâcheux retour en arrière.
/!\ Mais ça permet de
définir une prochaine amélioration :
ordonner correctement les numéros de version, tout en gardant l'alignement des colonnes. 🙂
[center]= =[/center]
En tâtonnant, je suis arrivé à rétablir l'alignement :
echo; dpkg -l | awk '$2~/^linux-([ghit]|[lm]o|si)/ && !/^rc/{print $1,$2,$3,$4}' | column -s" " -t | sort -k3 ; echo ; uname -mr
Apparemment, ça marche aussi bien que
echo; dpkg -l | grep -Ei "linux-(g|h|i|lo|mo|si|t)" | grep -Ev "^rc|binutils" | sort -k3 | awk '{print $1,$2,$3,$4}' | column -s" " -t ; echo ; uname -mr
et que
echo; dpkg -l | grep -Ei "linux-(g|h|i|lo|mo|si|t)" | grep -Ev "^rc|binutils" | sort -k3 | tr -s " " | cut -d" " -s -f1,2,3,4 | column -s" " -t ; echo ; uname -mr
qui (à part le binutils) donnait toute satisfaction
jusqu'au 19/01/2019
mais je ne sais toujours pas pourquoi l'une des trois vaudrait mieux que les autres.
____
(*) Exemple de fichier compilant des possibilités d'embrouilles, voici mon noyaux-test.txt du moment :
ii binutils-x86-64-linux-gnu 2.30-21ubuntu1~18.04 amd64
rc linux-signed-nawak-en-r-c 4.4.0.142.148 amd64
ii linux-headers-3.13.0-53 3.13.0-53.89 all
iU linux-generic 4.4.0.142.148 amd64
iU linux-signed-generic 4.4.0.142.148 amd64
ii linux-headers-generic 4.4.0.142.148 amd64
iU linux-image-generic 4.4.0.142.148 amd64
iU linux-signed-image-generic 4.4.0.142.148 amd64
ii linux-headers-4.4.0-142 4.4.0-142.168 all
ii linux-tools-common 4.4.0-142.168 all
iU linux-image-extra-4.4.0-142-generic 4.4.0-142.168 amd64
ii linux-headers-4.4.0-142-generic 4.4.0-142.168 amd64
iF linux-image-4.4.0-142-generic 4.4.0-142.168 amd64
iU linux-signed-image-4.4.0-142-generic 4.4.0-142.168 amd64
ii linux-tools-euclid 4.4.0.9029.30 amd64
ii linux-tools-4.4.0-9029-euclid 4.4.0-9029.31 amd64
ii linux-headers-4.4.0-14-generic 4.4.0-14.999 amd64
ii linux-headers-4.4.0-90-generic 4.4.0-90.999 amd64
ii linux-headers-3.13.0-150 3.13.0-150.99 all
iU linux-image-extra-4.4.0-142-generic 4.4.0-140.168 amd64
iU linux-signed-image-generic 4.4.0.140.148 amd64
ii linux-image-machin 4.4.0.43.45 amd64
ii linux-tools-truc 4.4.0.43.45 amd64
ii linux-modules-extra-4.15.0-43-generic 4.15.0-43.46 amd64
ii linux-modules-4.15.0-43-generic 4.15.0-43.46 amd64