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

Re: sed remplacer les "[ ]" d'une chaine



Et de la même man page :
special characters, including '\', lose  their  special  significance
within a bracket expression.

En clair, le caractère '\' perd sa signification spéciale entre '[]'.


Ce qui fonctionne :
$ l'exemple de Bernard,

. plusieurs substitutions dans un seul sed :
$ echo "--[chaine]-" | sed 's/\[/-/g; s/\]/-/g'

---chaine--


. un sed "étendu" :
$ echo "--[chaine]-" | sed -E 's/(\]|\[)/-/g'

---chaine--



-- 

Jean-Marc

Le 14/12/20 à 16:11, Bernard Isambert a écrit :
> man 7 regex :
> Pour insérer un « ] » littéral dans la liste, il faut le mettre en
> première position (ou après un éventuel « ^ »).
> 
> echo "--[chaine]-" | sed 's/[][]/-/g'
> ---chaine--
> 
> 
> Le 14/12/2020 à 14:51, benoit a écrit :
>> Bonjour à toutes et tous,
>> Je voudrais remplacer les caractères "[" et "]" avec sed, mais ils
>> fonts partie du «regroupement» de caractère à sélectionner. Je les ai
>> précédé d'un "\" ainsi :
>> sed 's/[\[\]]/-/g'
>> Mais ça ne marche pas...
>>
>> echo "--[chaine]-" | sed 's/[\[\]]/-/g'
>>  --[chaine]-
>>
>> Par contre ceci fonctionne :
>> echo "--[chaine]--" | sed 's/\[/-/g' | sed 's/\]/-/g'
>> ---chaine--
>> Même si ça marche, j'ai envie de comprendre...
>>
>> Merci d'avance
>>
>> -- 
>> Benoit
>>
>>
>> Sent with ProtonMail <https://protonmail.com> Secure Email.
>>
> 

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


Reply to: