Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Substitution en awk
Envoyé par: oudoubah

Bonjour,

J'essaie via un programme awk de récupérer des informations sur les lvms des serveurs (versions 1 et 2) :

#!/bin/sh

vgdisplay -v 2>/dev/null | awk '
/VG Name/ { nom = $3 }
/Format/ {
        type=1
        if ( $0 ~ "lvm2")
                type=2
        vg[nom]=type
}
/PE Size/ {
        print "-" $0 "-"
        gensub(/^[^0-9]*([0-9]*),[0-9 ]*([KMG])B/, "\1\2","g")
        print "+" $0 "+"
        vg[nom]=vg[nom] " " $0
}
/PV Name/ { vg[nom]=vg[nom] " " $3 }

END {
        for (volume in vg)
                print volume, vg[volume]
}
'

Le résultat :
-  PE Size               32,00 MB-
+  PE Size               32,00 MB+
-  PE Size               32,00 MB-
+  PE Size               32,00 MB+
groupe 2   PE Size               32,00 MB /dev/sda2 /dev/sda7
groupe2 2   PE Size               32,00 MB /dev/sda6

Ce que j'aimerais obtenir, c'est un affichage du type :
groupe 32M /dev/sda2 /dev/sda7
groupe2 32M /dev/sda6

Je dois mal utiliser gensub (ou sub ou gsub, au choix), mais je n'ai pas encore trouvé ce qui ne va pas.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 23 May 2007 13:00:35
Répondre     Citer    
Re: Substitution en awk
Envoyé par: oudoubah

Bon, ça fonctionne avec la règle :
/PE Size/ {
        pesize=gensub(/^[^0-9]*([0-9]*),[0-9 ]*([KMG])B/, "\\1\\2",g)
        vg[nom]=vg[nom] " " pesize
}

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 23 May 2007 14:07:27
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Substitution en awk
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons