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

Re: sed remplacement de "=" par espace





Le 16/03/25 à 11:55, Michel Verdier a écrit :
Le 16 mars 2025 Benoît Barbier a écrit :

sed "s/[""'’`;:,.=]/ /g

Ici j'ai mal copié collé ls '"' de fin, mais je l'utilisais dans mes tests

sed "s/[""'’`;:,.=]/ /g"


Pourquoi ça trouve pas les "=" ?
Est-ce qu'il y aurait plusieurs signe "=" dans l'UTF8 ?

N'a pas fonctionné avec la chaîne = "abcd-=-efgh" copiée-collée du terminal.

Si je copie tel que tes bouts de texte ça plante sed à cause des " et `
non protégés. De mon côté ça donne ça :

$ echo "abcd-=-efgh" | sed "s/[\"'\`:,.=]/ /g"
abcd- -efgh

Donne la commande exacte que tu passes et du résultat si tu as toujours
un problème avec =


J'ai du foirer un truc en ajoutant "="

J'ai utilisé la réponse de @Basile STARYNKEVITCH

> Le problème est le traitement par le shell des arguments.
>
> Peut-être que sed 's/[\"\'\`\’\`;:.=]/ /g' pourrait mieux convenir.
>
> https://www.gnu.org/software/bash/manual/bash.html#Quoting

Mais je constate que je dois quand même mettre des " plutôt que des ' pour encadrer :

sed "s/[\"\'\`\’\`;:.=!#]/ /g"

Si non le terminal (zsh) me fait un :

dquote>

au lieux de considérer que c'est correctement fermé.

Ce qui compte c'est que ça marche, mais si je pouvais comprendre la cause, je suis preneur d'une explication.

D'après ce que j'ai compris du lien ci-dessus au paragraphe 3.1.2.3 Double Quotes, pour préserve la valeur littérale, on a le choix entre backslash ‘\’ et double quotes(‘"’)
Cf.
https://www.gnu.org/software/bash/manual/bash.html#Double-Quotes

Mais visiblement je dois faire backslash ‘\’ pour préserve la valeur littérale et double quotes(‘"’) pour une fin de ligne correcte et éviter que le terminal(zsh) ne passe en :

dquote>

C'est bien ça ?

Merci

--
Benoît




Reply to: