#!/usr/bin/perl
use strict;use warnings;
while (<>){ # cette opérateur permet de lire les lignes
# des fichiers passer en arguments
print if /\s(?:[5-9]\d|\d{3,})%/; # affiche seulement les lignes
# qui correspondent à la regex
}
__END__
/\s(?:[5-9]\d|\d{3,})%/
\s - reconnaît un espace
(?: ) permet le regroupement sans capture
1er alternative
[5-9]\d
[5-9]\d - trouves toutes les nombre plus grands que 50 jusqu'à 99
[5-9] - c'est une classe de caractères qui permet de reconnaître 5,6,7,8 ou 9
\d - c'est une classe de caractères qui reconnaît les chiffres de 0 à 9
donc on peut la lire comme ça
50
51
.
.
59
60
.
.69
.
.
90
.
.
99
2ème alternative \d{3,}
reconnaît les nombres de minimum 3 chiffres
elle peut être améliorer vu qu'on cherche les nombres plus grand que 100
ce qui donne
[1-9]\d{2,} - nous n'avons pas besoin de reconnaître un group de minimum 3 chiffres qui commence avec 0
l'alternative
| - permet de reconnaître soit la partie gauche soit la partie droite de l'alternative
Voici l'exemple avec la regex modifiée
lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
use strict;use warnings;
while (<>){
print if /\s(?:[5-9]\d|[1-9]\d{2,})%/;
}
__END__
lami20j@debian:~/trash$ df -h | perl ccm.pl
/dev/hda7 9,2G 4,6G 4,2G 52% /
/dev/hda8 28G 15G 12G 56% /home