Re: [LA-technique] grep et regexp

[ Thread Index | Date Index | More linuxarverne.org/technique Archives ]


Bonjour
 

 

----- Original Message -----

From: Daniel Cartron

Sent: 02/20/14 05:06 PM

To: technique@xxxxxxxxxxxxxxxx

Subject: Re: [LA-technique] grep et regexp

Alors ça conviendra une fois que tu m'auras expliqué où couper et 
comment, parce que je veux avoir deux scripts séparés : un qui 
récupère le statut, et l'autre le numéro, donc qui dit script séparé 
dit une seule variable à traiter par script mais pas la mm, et là 
désolé mais je vois pas où je dois "inciser" proprement. 

en fait je voudrais avoir : 
variable_statut = mpc | grep...... 
ou 
variable_numero = mpc | grep...... 
 
Pour n'avoir qu'une seule des deux valeurs, il suffit de "couper" au niveau des groupes de capture (les parenthèses) de l'_expression_.
 
Pour récupérer le "statut" : STATUT=$(mpc | grep # | sed -e 's/^\[\([^]]\+\)\].*/\1/' | head -1)
Pour récupérer le numéro : NUMERO=$(mpc | grep # | sed -e 's/^[^#]\+#\([^/]\+\).*/\1/' | head -1)
 
J'ai ajouté un head par sécurité : je suppose que seule la première occurrence t'intéresse.
La première regexp capture ce qui se trouve entre des crochets au tout début de la ligne, la seconde capture tout ce qui se trouve entre le premier # de la ligne et le premier / qui suit.
Il y a un outil pas trop mal qui permet de tester et comprendre des regexp : http://regex101.com/r/cU2kY0
Dans notre cas (shell) on a des échappements supplémentaires, mais le principe est le même
 
  =^.^=


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/