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

Windows Discussion :

[batch]Remplacement caracteres speciaux


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut [batch]Remplacement caracteres speciaux
    Bonjour,

    J'ai un script batch qui en cree un autre qui va lui meme creer un fichier sql (oui ça à l'air bourrin comme ça) le tout à partir d'un fichier sql.
    En gros le but c'est de lancer le script avec en parametre un fichier sql. Le script genere un autre script qui une fois lancé va recreer et executer le fichier sql.

    Le probleme est que dans le fichier sql d'origine il y a pas mal de caracteres spéciaux. Et dans mon script de sortie je me retrouve avec des lignes comme celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo v_id TABLE1.ID%TYPE;  >> tmp.sql
    Et quand je lance le script, le % fait le saut. De meme avec des < ou > d'autres problemes apparaissent.

    Ce que je voudrais donc, c'est avant d'écrire ma ligne dans le script de sortie, traiter les caracteres spéciaux pour que % soit remplace par %% et < par ^< (et pareil pour tous les autres caracteres).

    Je voulais donc savoir si quelqu'un avait une methode simple pour cela, autre que faire des for avec specification des delimiteurs pour chacun des caracteres.
    Autre question pouvant etre liée, peut-on recuperer le delimiteur lorsqu'on fait un for avec plusieurs delimiteurs ("delims=#@" par exemple) ?
    Peut-on savoir combien de variables on ete crees (ou le nombre de delimiteurs trouvés sur la ligne ce qui revient au meme) ?

    Merci d'avance.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par Drizzt [Drone38]
    Ce que je voudrais donc, c'est avant d'écrire ma ligne dans le script de sortie, traiter les caracteres spéciaux pour que % soit remplace par %% et < par ^< (et pareil pour tous les autres caracteres).

    Je voulais donc savoir si quelqu'un avait une methode simple pour cela
    J'en ai une simple mais qui nécessite un programme supplémentaire. A mon humble avis de linuxien, cela vaut le coup de l'installer sous Windows et d'apprendre à l'utiliser...mais ce n'est qu'un avis...

    Fais un tour à http://gnuwin32.sourceforge.net/packages/sed.htm.

    `sed' te permet d'éditer un flux de texte.
    Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed /^[[:space:]]*$/d fichier.txt > fichierSansLignesVides.txt
    L'expression entre les "/" veut dire " toutes les lignes qui commencent par ("^") 0 à N ("*") caractères d'espacement ("[[:space:]]") suivis par la fin de la ligne ("$") ". Le "d" veut dire "delete", donc cela efface les lignes vides ou qui ne contiennent que des caractères d'espacement (tabulations comprises).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo abcdefghijabcdefghij > fichier.txt
    type fichier.txt | sed s/d/xxdxx/g
    abcxxdxxefghijabcxxdxxefghij
    `sed' peut lire depuis l'entrée standard (d'où le "type" suivi d'un pipe). La commande "s" sert à "substituer". Entre les deux premiers "/" on met une expression régulière décrivant ce que l'on souhaite remplacer (ici, "d"). Ensuite on met par quoi on substitue (ici "xxdxx"). Enfin, l'option "g" (comme "global") a été utilisée pour que le remplacement se fasse sur tous les "d" trouvés sur chaque ligne et non seulement sur le premir trouvé.

    Ca t'irait ?

    Note : il y a aussi un `sed' pour Windows à http://unxutils.sourceforge.net/, un autre avec "Cygwin", etc...

  3. #3
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Par défaut
    Salut David.Schris, saurais tu où je peux trouver l'aide en fancais pour la commande Sed ?

  4. #4
    Membre Expert
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Par défaut
    Trouvé en moins de 5 minutes avec Google :
    http://www.minet.net/spip/article.php3?id_article=74

    Faites des recherches avant de poster

  5. #5
    Inactif Avatar de Lorponos
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 243
    Par défaut
    Citation Envoyé par Juju_41
    Trouvé en moins de 5 minutes avec Google :
    http://www.minet.net/spip/article.php3?id_article=74

    Faites des recherches avant de poster
    Merci beaucoup

    J'ai chercher pour temps

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Autre style de chose qui peut servir : un tutoriel sur les expressions rationnelles (dites "régulières").

    Un début : le chapitre III d'un cours sur les expressions régulières en C ; et puis le man de grep évidemment.

    Tu dois pouvoir en trouver pas mal d'autres facilement sur le même sujet (ex. : dans la doc. de PHP).

    Penser que pour utiliser les expressions régulières étendues avec `sed' il faut utiliser l'option "-r".

  7. #7
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Merci beaucoup, ça devrait pouvoir me convenir tout à fait.

    Edit> Nickel ça marche, je mets en résolu, encore merci.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/09/2005, 21h20
  2. [Débutant][String] Remplacez les caractères speciaux
    Par paf15 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 27/04/2004, 22h39
  3. [langage] Caractères spéciaux
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 28/11/2003, 10h39
  4. remplacement caracteres de ponctuation par "_"
    Par LineLe dans le forum ASP
    Réponses: 5
    Dernier message: 22/10/2003, 08h37
  5. insertion caracteres speciaux html
    Par arcane dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/09/2003, 14h16

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