Re: sed remplacement de "=" par espace
On Sun, 2025-03-16 at 12:52 +0100, Benoît Barbier wrote:
>
>
> 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é.
Lz shell zsh est différent de GNU bash et a des règles de quotation différente.
La documentation à utiliser est donc différente.
https://zsh.sourceforge.io
Une autre solution serait d'écrire un programme C (ou Ocaml ou Rust) qui execute
/bin/sed comme une convient et de le compiler ou même qui fait le remplacement
espéré.
Je le laisse en exercice au lecteur. On pourait imaginer y utiliser
https://man7.org/linux/man-pages/man3/regex.3.html
https://man7.org/linux/man-pages/man7/regex.7.html
En C++ Qt offre aussi des possibilités nombreuses (et peut-être utilisé en
dehors d'applications graphiques). https://www.qt.io/ et aussi
http://www.fox-toolkit.org/
Je n'ai d'ailleurs pas compris le problème originel qui est à résoudre. De mon
point de vue manquent à la question le contexte du problème, a expliquer en
plusieurs dizaines de phrases françaises.
S'il s'agit de traiter des fichiers encodés en UTF-8 alors la bibliothèque
https://www.gnu.org/software/libunistring/ est adaptée.
On pourrait tirer profit de la bibliothèque Glib
https://fr.wikipedia.org/wiki/GLib
Je rapelle qu'il existe d'autres encodages (dont ISO-LATIN-1, KOI-8 et d'autres)
et la complexité d'Unicode https://fr.wikipedia.org/wiki/Unicode
Je n'ai pas comprise le problème réel à résoudre et son contexte, et une
explication détaillée me parait nécessaire et manquer.
Cordialement
--
Basile STARYNKEVITCH <basile@starynkevitch.net>
8 rue de la Faïencerie
92340 Bourg-la-Reine, France
http://starynkevitch.net/Basile & https://github.com/bstarynk
Reply to: