Re: bash et expression régulière

Top Page

Reply to this message
Author: anne aublanc
Date:  
To: Frédéric BOITEUX, guilde
Subject: Re: bash et expression régulière

----- Original Message -----
From: "Frédéric BOITEUX" <fboiteux@???>
To: <guilde@???>
Sent: Wednesday, September 13, 2006 9:05 AM
Subject: Re: bash et expression régulière


| Le mer 13 sep 2006 03:05:02 CEST, "anne aublanc"
| <anne.aublanc@???> a écrit :
| 
| > bonjour,
| > 
| > j'aimerais avoir cela  ab\$cd\$e en partant de ab$cd$e dans une variable (titi)
| > 
| > en ligne de cde :
| > user_shadow1='ab$cd$e'; echo $user_shadow1 | sed -e s/\\$/\\\\\$/g
| > ab\$cd\$e
| > 
| > user_shadow1='ab$cd$e'; titi=`echo $user_shadow1 | sed -e s/\\$/\\\\\$/g`; echo $titi
| > ab$cd$e$
| > 
| > Si vous pouvez m'expliquer le problème...
| > 
| > j'aimerais beaucoup que titi = ab\$cd\$e
| > 
| > merci
| > anne
| > 
| 
| Bonjour,
| 
| extrait de la page de manuel :
| 
|       Quand l'ancienne forme  de  substitution  avec  les  backquotes  `  est
|       utilisée, le caractère antislash garde sa signification littérale, sauf
|       s'il est suivi de $, `, ou \.  La première backquote non  protégée  par
|       un  antislash termine la substitution de commande.  Quand on utilise la
|       forme $(commande), tous les caractères entre parenthèses gardent  leurs
|       valeurs littérales. Aucun n'est traité spécialement.
| 
| Donc ton expression s/\\$/\\\\\$/g n'est plus valable dans ce contexte. De toute façon, elle n'est pas très lisible !
| 
| tu pourrais écrire :
| 
| user_shadow1='ab$cd$e'; titi=`echo "$user_shadow1" | sed -e 's/\\$/\\\\$/g'` ; echo $titi
| 
| [ une anti-quote de moins ]
| ou plus lisible :
| 
| user_shadow1='ab$cd$e'; titi=$(echo $user_shadow1 | sed -e 's/\$/\\$/g') ; echo $titi
| 


encore un souci avec le caractère / que je peux trouver...
user_shadow1='ab$cd$e/fg'; titi=$(echo $user_shadow1 | sed -e 's/\$/\\$/g' | sed -e 's/\//\\//g' ) ; echo $titi
=> sed: -e expression n°1, caractère 9: option inconnue pour `s

si idée...
anne