Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

=c3

15 réponses
Avatar
Olivier Miakinen
Bonjour,

Bien que ne connaissant pas Perl, j'ai l'impression que ce langage
doit être le plus approprié pour ce que je veux faire. En gros,
j'ai des fichiers contenant des textes écrits en tchèque (avec
majuscules et minuscules) que je voudrais convertir en API
(alphabet phonétique international). Du coup, j'aimerais pouvoir
écrire un script à lancer depuis un shell de type bash, que je
puisse utiliser de la façon suivante :
le_script fichier_source > fichier_destination

Par exemple, si le_script contient sous une forme ou une autre
les commandes de conversion suivante :
------------------------
s/ž/ʒ/gi
s/é/e:/gi
s/e/ɛ/gi
------------------------

et si fichier_source a le contenu suivant :
------------------------
Žitné pole, žitné pole,
jak to zraje vesele!
------------------------

alors j'obtiendrai ceci dans fichier_destination :
------------------------
ʒitnɛ: polɛ, ʒitnɛ: polɛ,
jak to zrajɛ vɛsɛlɛ!
------------------------

Remarquer d'une part que le Ž et le ž ont tous deux été
remplacés par ʒ ; d'autre part que les é sont d'abord
devenus e: (s/é/e:/) avant de devenir ɛ: (s/e/ɛ/).

Cordialement,
--
Olivier Miakinen

5 réponses

1 2
Avatar
Olivier Miakinen
Le 04/10/2018 14:52, Marc Espie avait écrit :
perl -pi.bak -e 's/E/e/g;'

En relisant ton article de la semaine dernière, je vois que
tu avais mis un point-virgule dans cet exemple.
Il est juste dommage que tu n'aies pas écrit dès ce moment :
perl -pi.bak -e 's/E/e/g;' -e 's/A/a/g;'
En effet ça nous aurait évité une discussion houleuse puisque
je serais parti de cet exemple pour fabriquer le mien petit
à petit (de la même manière que ce que j'ai fait à partir
de l'exemple de François).
Mais bon, tu ne pouvais pas savoir que j'en étais à un tel
degré zéro de connaissance de Perl.
Sans rancune ?
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 09/10/2018 15:22, je répondais à Benoit Izac :
Il manque un « ; » pour séparer les deux instructions. C'est la même
chose que :
perl -p -e 's/foo/bar/g
s/qux/baz/g'
Donc :
perl -p -e 's/foo/bar/g;' -e 's/qux/baz/g'

C'est pour ça que je n'y étais pas arrivé. Pourtant j'avais vraiment
cherché assez longtemps avant de venir poser ma question ici, et je
n'avais pas trouvé d'exemple avec deux -e de suite.

Et bien évidemment, maintenant que j'ai la réponse, je sais trouver
des exemples dur le net qui donnent cette même réponse. Par exemple
ici :
<https://stackoverflow.com/questions/10424113/perl-command-line-search-and-replace-with-multiple-expressions>
:-)
--
Olivier Miakinen
Avatar
Olivier Miakinen
[Supersedes]
Le 09/10/2018 15:22, je répondais à Benoit Izac :
Il manque un « ; » pour séparer les deux instructions. C'est la même
chose que :
perl -p -e 's/foo/bar/g
s/qux/baz/g'
Donc :
perl -p -e 's/foo/bar/g;' -e 's/qux/baz/g'

C'est pour ça que je n'y étais pas arrivé. Pourtant j'avais vraiment
cherché assez longtemps avant de venir poser ma question ici, et je
n'avais pas trouvé d'exemple avec deux -e de suite.

Et bien évidemment, maintenant que j'ai la réponse, je sais trouver
des exemples sur le net qui donnent cette même réponse. Par exemple
ici :
<https://stackoverflow.com/questions/10424113/perl-command-line-search-and-replace-with-multiple-expressions>
:-)
--
Olivier Miakinen
Avatar
Benoit Izac
Bonjour,
Le 09/10/2018 à 15:22, Olivier Miakinen a écrit dans le message
<ppia2a$26gn$ :
mais surtout que l'écriture suivante ne fait pas d'erreur, même si
elle semble ajouter un saut de ligne entre deux expressions.
perl -p -e 's/foo/b' -e 'ar/g;s/q' -e '?ux/baz/g'
Résultat sur la chaîne XXXfooYYYquxZZZ de la dernière expression :
XXXb
arYYYbazZZZ

C'est normal puisque c'est équivalent à :
perl -p -e 's/foo/b
ar/g;s/q
?ux/baz/g'
--
Benoit Izac
Avatar
espie
In article <ppiaia$26i3$,
Olivier Miakinen <om+ wrote:
Mais bon, tu ne pouvais pas savoir que j'en étais à un tel
degré zéro de connaissance de Perl.
Sans rancune ?

Bah oui, bien sur sans rancune. Ca m'a plus amuse qu'autre chose.
1 2