Extraction de nombre d'une ligne

Résolu
thomas57070 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   -  
-
Bien le bonjour,

Voilà je suis un petit script perl, à un moment dans mon script je sort les ouvertures et fermetures de session du fichier "/var/log/auth.log" je fais un split de chaque ligne quand elle contient "session opened" ou "session closed" il en ressort :
CRON[14..]:
su[6..]:
...

Ce que je voudrais c'est en retirer juste le numéro du processus entre crochet, voilà mon problème cela ne doit pas être bien sorcier mais je bloque =/ si quelqu'un à une idée !

Tout vient à point à qui sait attendre !
A voir également:

3 réponses


 
Salut thomas57070,

Si tu veux retirer juste le numéro et que tu as une chaîne "CRON[14613]:", tu vas te retrouver avec "CRON[]:". Si c'est bien ce que tu veux, tu fais comme cela :

$st =~ s/([a-zA-Z]+\[)[0-9]+(\]:)/$1$2/;


Si ce que tu veux, en fait, c'est ne garder que "CRON", tu fais comme cela :

$st =~ s/([a-zA-Z]+)(\[[0-9]+\]:)/$1/;



Dal
0
thomas57070 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   8
 
Merci de ta réponse qui soit dit en passant marche très bien mais en fait je crois que je me suis mal exprimé, je souhaite voir afficher que les chiffres entre les crochets : CRON[6413]: => 6413
0
thomas57070 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   8
 
C'est bon j'ai légèrement modifié la commande
$st =~ s/([a-zA-Z]+\[)[0-9]+(\]:)/$1$2/; 
en
$st =~ s/([a-zA-Z]+\[)([0-9]+)(\]:)/$1$2/;

par contre j'ai quelques lignes récalcitrantes du genre :
2564
2705
gdm-session-1458
6541


Merci d'avoir répondu si vite [Dal], les expressions régulières j'ai encore un peu de mal.
0