URL: https://linuxfr.org/forums/programmation-shell/posts/sed-remplacer-sous-conditions Title: SED : Remplacer sous conditions... Authors: Gaël4422 Date: 2021年04月14日T17:21:51+02:00 License: CC By-SA Tags: sed, bash, linux et remplacer Score: 0 Bonjour, voilà, j'ai des gros fichiers à plat qui présente des données date, texte, alphanumérique, montants, ... Or, j'ai un SGB pour les exploiter et il bloque sur l'interprétation des fichiers pour une simple raison : Le format du champ numérique n'accepte pas les espaces et le séparateur de décimale est le point. Du coup, je tâtonne avec sed pour passer de (mon fichier source): ```TABLE;MODELE K568 IGNI;ELEC;1 256,34;20/05/2020;18/12/2020;HJ6KRL4;753261552``` A ça (résultat grandement désiré) : ```TABLE;MODELE K568 IGNI;ELEC;1256.34;20/05/2020;18/12/2020;HJ6KRL4;753261552``` Ou j'ai modifié juste le montant en retirant l'espace (C'est là que je bloque) et en remplaçant la virgule par un point (ça, ça fonctionne). Mon idée étant de lui faire remplacer tout espace se trouvant après ET avant un chiffre. Les autres espaces étant utiles. Grand débutant, j'essaie de chercher et j'ai fais ça : ``` for file in *.txt do echo "Traitement de $file ..." sed -i -e "s/[0-9][[:space:]][0-9]/[0-9][0-9]/;s/,/./g" "$file" done ``` Ca me donne un résultat de type bloubi-boulga indigeste. Et je récupère (résultat tristement obtenu) : ```TABLE;MODELE K568 IGNI;ELEC;[0-9][0-9]56.34;20/05/2020;18/12/2020;HJ6KRL4;753261552``` Surtout je ne sais pas comment lui dire de reprendre les mêmes chiffres et de supprimer juste l'espace. Lui, il me copie consciencieusement mon code... Vous auriez une idée ? Merci pour votre attention