IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Problème de caractère spéciaux pour sed/awk en bash


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème de caractère spéciaux pour sed/awk en bash
    Bonjour,

    Voilà je galère avec mon fichier csv que j'ai créer dernièrement.
    J'explique la chose, c'est pas bien complexe je penses, mais je dois rater quelque chose.

    J'ai un fichier avec un série de chiffre et tab, puis une phrase, de ce style :
    Fichier source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1000		0	1	0	EID_0050_a0040g_0060_TEST010_X					-1	0	0	0	25	Hello World!?
    1001	2538	0	1	0	EID_0100_a0012_0010_TEST010_X					0	-1	1002	0	5	........
    1002	2538	0	1	0	EID_0100_a0012_0010_TEST010_X					0	-1	1002	0	5	How are you?
    etc etc (6000 lignes)

    J'ai extrait le texte pour en faire une trad
    fichier csv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Hello World!?;Bonjour le Monde!?
    ........;...
    How are you?;Comment allez-vous ?
    J'aimerai relire mon fichier CSV, de trouver les strings dans mon fichier sources et le remplacer.

    J'ai procédé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/bin/bash
    filename=fichiersource.txt
    filecsv=fichier.csv
     
    while IFS=";" read -r col1 col2
    do
        echo "I got:$col1|$col2"
        if [[ $col1 == "END" ]]
        then
        	exit 0
        else	
        sed -i "s:$col1:$col2:g" $filename
    	fi
    done < $filecsv
    Résultat fichier source :

    Donc NICE ! >.<

    Vous comprenez de suite que j'ai un problème sur les caractères spéciaux, en effet les "...." et autres "*" en début de phrase massacre mon sed et donc massacre mon fichier sources.
    C'est que bon, en morse, c'est mon drôle à lire.

    Je suis à 2 doigts de finir ma trad ! Je vous serai totalement reconnaissant si vous avez la moindre idée pour palier à ce petit problème (dont j'ai vraiment honte de pas résoudre tout seul )

    Merci d'avance et Bonne soirée !

    PS : Je prend aussi tout code en Java/Powershell si besoin et si ça marche mieux !

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Bonjour,

    faire protéger les caractères spéciaux pour une regex ?
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/'"$(sed 's/[.*?+]/\\&/g' <<< "$var")"'/'"$var1"'/' fichiersource
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci ^^ je vais tester ça sur le champs !

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Bonjour,
    Pas très optimum comme méthode: tu relis et modifie ton fichiersource.csv autant de fois que tu as de traduction dans ton fichier.csv.

    Il serait plus optimum de lire le fichier.csv et de créer toute tes regex et ensuite lancer le sed avec toutes les regex sur fichiersource.txt

    Et sinon, à priori, d'après ton problème, awk serait plus efficace.
    Cordialement.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui j'avais vu mon erreur ! J'ai effectivement changer le fichier a loop et ça va beauuuucoup mieux !

    Merci en tout cas ! ^__^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème insertion caractères spéciaux
    Par gaet_045 dans le forum Débuter
    Réponses: 3
    Dernier message: 07/07/2006, 14h42
  2. [MySQL] Problèmes avec caractères spéciaux
    Par brokengillou dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2006, 17h02
  3. Probléme encodage caractéres spéciaux MYSQL
    Par FoxLeRenard dans le forum Installation
    Réponses: 1
    Dernier message: 20/02/2006, 12h10
  4. [SOAP] problème de caractères spéciaux
    Par ep31 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 02/12/2005, 17h43
  5. [SQL Server] problème de caractères spéciaux
    Par mbibim63 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 02/06/2005, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo