[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: regex en bash




Le 22 déc. 2017 à 09:19, Jean-Marc <jean-marc@6jf.be> a écrit :

Thu, 21 Dec 2017 18:13:19 +0100
Daniel Caillibaud <ml@lairdutemps.org> écrivait :

Pourquoi ?

$ [[ 'abcd' =~ '^ab' ]] && echo ok || echo KO
KO

$ [[ 'abcd' =~ 'cd$' ]] && echo ok || echo KO
KO

??

Parce qu'entre guillemets, les caractères ^ et $ sont considérés comme des caractères normaux.

$ set -x

$ [[ 'abcd' =~ '^ab' ]] && echo ok || echo KO
+ [[ abcd =~ \^ab ]]
+ echo KO
KO

$ [[ 'abcd' =~ ^'ab' ]] && echo ok || echo KO
+ [[ abcd =~ ^ab ]]
+ echo ok
ok

$ [[ 'abcd' =~ 'cd$' ]] && echo ok || echo KO
+ [[ abcd =~ cd\$ ]]
+ echo KO
KO

$ [[ 'abcd' =~ 'cd'$ ]] && echo ok || echo KO
+ [[ abcd =~ cd$ ]]
+ echo ok
ok

un petit "set -x" fonctionne bien, même dans une session interactive.

Joyeux Noël !!!

Cette explication avec appuis de l’exemple est effectivement beaucoup plus claire que ma réponse. Effectivement l’utilisation du « set -x » est une excellente façon de voir ce qui se passe.

Merci

-- 
Pierre Malard

   « Si, comme le disait le général de Gaulle, la France n'avait pas été la
   France... on peut logiquement penser que tous les français auraient été
   des étrangers » ;-)
                                                                               Pierre Dac
   |\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)   πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ (  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

Attachment: signature.asc
Description: Message signed with OpenPGP


Reply to: