Re: Expressions regulières //netoyage de fichiers SAMBA
Eric DECORNOD a écrit : PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire modération dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectacle ;-) (les basheux auraient-ils disparu ?) Mais...mais quel jour sommes-nous ? Ha oui d'accord. Trop gros...Passera pas. Cordialement, De même P. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Expressions regulières //netoyage de fichiers SAMBA
Bonjour, je cherche des connaisseurs shell:) En fait je cherche à faire une petite boucle qui passerais en récursif l'ensemble des fichiers Pour les nettoyer de leur accents et de leus espaces Voilà ce que j'ai sous la main pour le moment: Le problème c'est qu' j'aimerais passer un test à chaque fichier pour voir si chaqe condition est respectée... rename 's/[éèêë]/e/g' $1 rename 's/[ÈÉÊË]/E/g' $1 rename 's/[àáâãäå]/a/g' $1 rename 's/[ÀÁÂÃÄÅ]/A/g' $1 rename 's/[ïîìí]/a/g' $1 rename 's/[ÌÍÏÎ]/I/g' $1 rename 's/[òóôõö]/o/g' $1 rename 's/[ÒÓÔÕÖ]/O/g' $1 rename 's/[ùúûü]/u/g' $1 rename 's/[ÙÚÛÜ]/U/g' $1 rename 's/[$!?µ£ %]/_/g' $1 Si qq a une expression plus propre ;) Merci
Re: Expressions regulières //netoyage de fichiers SAMBA
Le jeudi 19 avril 2007 11:06, Cédric LE BRIS a écrit : Bonjour, je cherche des connaisseurs shell:) [...] s/shell/perl/ rename 's/[éèêë]/e/g' $1 rename 's/[ÈÉÊË]/E/g' $1 rename 's/[àáâãäå]/a/g' $1 rename 's/[ÀÁÂÃÄÅ]/A/g' $1 rename 's/[ïîìí]/a/g' $1 rename 's/[ÌÍÏÎ]/I/g' $1 rename 's/[òóôõö]/o/g' $1 rename 's/[ÒÓÔÕÖ]/O/g' $1 rename 's/[ùúûü]/u/g' $1 rename 's/[ÙÚÛÜ]/U/g' $1 rename 's/[$!?µ£ %]/_/g' $1 Si qq a une expression plus propre ;) Merci tr/èêëÈÉÊËàáâãäåÀÁÂÃÄÅïîìíÌÍÏÎòóôõöùúûüÙÚÛÜ$!?µ£ %/aaAAo___/ c.f. : http://perldoc.perl.org/perlop.html#tr/SEARCHLIST/REPLACEMENTLIST/cds-tr-y-transliterate-/c-/d-/s sinon mais je suis pas sur : rename ' s/[=a=]/a/g; s/[=A=]/A/g; s/[=e=]/e/g; s/[=E=]/E/g; ... ' $1 Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré
Re: Expressions regulières //netoyage de fichiers SAMBA
Cédric LE BRIS a écrit : Bonjour, je cherche des connaisseurs shell:) En fait je cherche à faire une petite boucle qui passerais en récursif l'ensemble des fichiers Pour les nettoyer de leur accents et de leus espaces Voilà ce que j'ai sous la main pour le moment: Le problème c'est qu' j'aimerais passer un test à chaque fichier pour voir si chaqe condition est respectée... rename -n ... rename 's/[éèêë]/e/g' $1 rename 's/[ÈÉÊË]/E/g' $1 rename 's/[àáâãäå]/a/g' $1 rename 's/[ÀÁÂÃÄÅ]/A/g' $1 rename 's/[ïîìí]/a/g' $1 rename 's/[ÌÍÏÎ]/I/g' $1 rename 's/[òóôõö]/o/g' $1 rename 's/[ÒÓÔÕÖ]/O/g' $1 rename 's/[ùúûü]/u/g' $1 rename 's/[ÙÚÛÜ]/U/g' $1 rename 's/[$!?µ£ %]/_/g' $1 Pour cette dernière, je listerait plutôt tous les caractères acceptés et remplacerait le reste par _, du genre rename 's/[^a-zA-Z0-9\-_ ]/_/g' $1 puis virer éventuellement les _ doublés rename 's/__/_/g' $1 Mais tu vas avoir un pb, car seul la 1re modif va marcher, pour les suivantes, $1 aura changé... Je te conseillerais plutôt d'utiliser sed pour tout faire en 1 fois, genre new=$(echo $1 | sed -e 's/[éèêë]/e/g; s/[ÈÉÊË]/E/g; ... ; s/[^a-zA-Z0-9\-_ ]/_/g; s/__/_/g') ou mieux avec new=$(echo $1|sed -e 'y/áàâäçéèêëíìîïñóòôöúùûü ÁÀÂÄÇÉÈÊËÍÌÎÏÑÓÒÔÖÚÙÛÜ/cn_cn/; s/[^a-zA-Z0-9\-_ ]/_/g; s/__/_/g') # Attention, la ligne ci-dessus vire les majuscules et les espaces, je te laisse corriger if ( $new != $1) then echo Renommer '$1' en '$new' ? read rep [ $rep == 'o' ] mv $1 $new echo renommage OK fi tr 'y/chars/chars/' marche aussi si tu n'es pas en utf8. Daniel -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Expressions regulières //netoyage de fichiers SAMBA
Eric DECORNOD a écrit : tr/èêëÈÉÊËàáâãäåÀÁÂÃÄÅïîìíÌÍÏÎòóôõöùúûüÙÚÛÜ$!?µ£ %/aaAAo___/ Attention à l'utf8, cf http://www.opengroup.org/onlinepubs/009695399/utilities/tr.html (merci à Vincent Lefevre) Daniel -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Expressions regulières //netoyage de fichiers SAMBA
Le jeudi 19 avril 2007 13:13, Daniel Caillibaud a écrit : Eric DECORNOD a écrit : tr/èêëÈÉÊËàáâãäåÀÁÂÃÄÅïîìíÌÍÏÎòóôõöùúûüÙÚÛÜ$!?µ£ %/aaAAo___/ Attention à l'utf8, cf http://www.opengroup.org/onlinepubs/009695399/utilities/tr.html (merci à Vincent Lefevre) Daniel /usr/bin/rename n'utilise pas /usr/bin/tr, mais la fonction eval() de perl. Pour que Perl respecte le utf8 dans LANG, il faut définir la variable d'environnement PERL_UNICODE=SDAL Quand on est en utf-8, il y a mieux : # apt-get install libtext-unidecode-perl $ PERL_UNICODE=SDA perl -MText::Unidecode -pe 'unidecode($_)' cötÖnÉфЛЯ cotOnEfLIa par exemple: ls -1 | PERL_UNICODE=SDA \ perl -MText::Unidecode -ne 'rename $_, unidecode($_) or warn $! : $_' Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré
Re: Expressions regulières //netoyage de fichiers SAMBA
Le jeudi 19 avril 2007 15:23, Jacques L'helgoualc'h a écrit : Eric DECORNOD a écrit, jeudi 19 avril 2007, à 11:48 : [...] sinon mais je suis pas sur : rename ' s/[=a=]/a/g; [...] $ echo éêè | perl -pe 's/[=e=]/e/g' POSIX syntax [= =] is reserved for future extensions in regex; marked by -- HERE in m/[=e=] -- HERE / at -e line 1. Ce n'est encore qu'une promesse (sous Sarge)... -- Jacques L'helgoualc'h troll J'ai vu, ;-(... encore un vaporware, comme utf8 facile pour tous. /troll A avoir quinze moteurs de regexp différents on ne sait plus qui correspond à quoi... « The POSIX character classes [.cc.] and [=cc=] are recognized but not supported and trying to use them will cause an error. » Désolé pour les indications foireuses, j'espère m'être rattrapé avec Text:Unidecode. J'ai même fini par ré-écrire Text::Unidecode en Java tellement cette fonction me manque en général... PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire modération dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectacle ;-) (les basheux auraient-ils disparu ?) Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré