Bonjour à tous,
Je souhaite dans un script bash, transformer tous les caractères accentués par leur équivalents sans accents.
Je m'explique par l'exemple ...
Transformer stéphane en stephane
Transformer ève en eve
Transformer âêîôû en aeiou
Transformer äëïöü en aeiou
Existe t'il déjà un utilitaire qui fais ça ?
A++
# tr
Posté par kolter (site web personnel, Mastodon) . Évalué à 5.
M.
[^] # Re: tr
Posté par Stephane COLIN (site web personnel) . Évalué à 1.
A++
[^] # Re: tr
Posté par Stephane COLIN (site web personnel) . Évalué à 1.
kolter,
En fait je cherche une expression régulière équivalente à ce que tu viens de me donner avec l'utilitaire externe 'tr' qui soit utilisable avec awk, et en plus je repasse toutes les strings en minuscules à la volée et je remplace les espaces par un tiret (-) ...
genre (fichier d'entrée délimité par virgule) :
Nom du fichier : in.csv
Contenu du fichier (Prénon,NOM) :
éssai,ÉSSAI
Commande de reformatage awk :
awk -F , '{print tolower($2)"."tolower($1)",password,domaine.dom,"$1","$2}' in.csv
| |
ici -------------------------------- et ici -----
Comme tu peux le voir le passage en minuscules ne pose pas de problèmes dans mon exemple, par contre je ne connais pas la regexp que je peux utiliser pour transformer tous les caractères accentués par leur équivalents sans accents et remplacer les espaces par des tirets.
Et même, en fait, je ne sais pas si c'est faisable dirrectement avec awk ...
Il faut également savoir qu'il vas y avoir d'autres champs que je vais formatter à la suite (nom.prenom,password,domain.dom,Prénom,NOM) ...
Une idée ?
[^] # Re: tr
Posté par snt . Évalué à 2.
{
gsub(/é/, "e",a) ;
gsub(/è/, "e",a) ;
.....
return a ;
}
[^] # Re: tr
Posté par snt . Évalué à 2.
cat in.csv | tr 'blabla' 'blabla' | awk'{ blabla }'
[^] # Re: tr
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 2.
pour que toutes les solutions données ici fonctionnent il faut que
la locale utilisée pour créer les fichiers a traiter soit la meme que celle
utilisée pour créer le script de conversion.
Sinon cela n'aura au mieux aucun effet, au pire des effets de bords non voulus.
Malheureusement il est impossible de programmer une fonction suffisament
intelligente pour 'enlever les accents' de toutes les langues.
# Problème résolu ...
Posté par Stephane COLIN (site web personnel) . Évalué à 1.
Voilà comment j'ai fini par résoudre mon problème :
Le fichier d'entrée contient par exemple :
Prénom,NOM QUI PEUT AVOIR DES ACCENTS ET DES ESPACE
les paramètres du script sont :
filename domaine.dom
Je pense qu'utiliser la puissance de awk aurait été plus élégant (notament l'exemple de function awk donné par snt), mais je suis trop null pour l'utiliser :-(
Voilà c'était mon message du jour ...
A++
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.