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

Autres Logiciels Discussion :

Notepad++ expression reguliere


Sujet :

Autres Logiciels

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut Notepad++ expression reguliere
    Bonjour,

    Dans notepad++ on peut utiliser les expressions régulières. J'ai un fichier de 45000 lignes dans lequelle j'ai des lignes en doublon du genre :
    insert into ressource (id, idpat, conditionning) /n values (1,2,3);

    Je voudrais supprimer toutes les lignes qui sont de ce type :
    insert into ressource (id, idpat, conditionning) /n values (

    sachant que dans le values les valeurs diffèrent à chaque ligne.

    Est ce que quelqu'un pourrait m'aider s'il vous plait ?
    Merci.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 208
    Points
    208
    Par défaut
    Bonjour,

    Je vois que ton post date de presque 1 mois, et il n'a pas de réponse, peut-être parce qu'il manque de précision.
    Ce fichier, c'est un fichier d'export SQL d'une base de donnée non ?
    Je suppose que ton fichier est de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .....
    insert into ressource (id, idpat, conditionning)
    values (1,2,3);
    insert into ressource (id, idpat, conditionning)
    values (4,5,6);
    insert into ressource (id, idpat, conditionning)
    values (7,8,9);
    .....
    Et que tu veuilles obtenir :
    insert into ressource (id, idpat, conditionning)
    values
    (1,2,3),
    (4,5,6),
    (7,8,9);
    C'est ça ?
    Dans ce cas voici la procédure avec Notepad++ que je te propose :
    Etape 1 : enlever les lignes insert into sauf la première
    1. FAIS UNE COPIE DE SAUVEGARDE DE TON FICHIER ORIGINAL (!!!)
    2. Sélectionne (sans le retour à la ligne) la première ligne où se trouve l'insert qui se répète
    3. Fais click droit "copier" (ça va servir après)
    4. Fais "CTRL H" ou "Remplacer" dans le menu "Edition"
    5. Mets un back slash devant les parenthèses comme ceci : insert into ressource \(id, idpat, conditionning\)
    6. Mets "DOUBLON" dans le champ "Remplacer par"
    7. Sélectionnes l'option "Expression régulière"
    8. Fais "Remplacer tout"
    9. Reviens sur la première ligne contenant "DOUBLON" au dessus de values (1,2,3); (la première des lignes "values") Sélectionne le mot"DOUBLON" et fait coller pour remettre l'insert into

    Tu dois obtenir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    insert into ressource (id, idpat, conditionning)
    values (1,2,3);
    DOUBLON
    values (4,5,6);
    DOUBLON
    values (7,8,9);
    Etape 2 Enlever les lignes contenant "DOUBLON" suivies par "values"
    1. CTRL H (ou "remplacer"
    2. Mettre "DOUBLON\r\nvalues" dans le champ "Rechercher" (ou "DOUBLON\nvalues" si fichier type unix)
    3. Laisser le champ "Remplacer" vide
    4. Clicker sur "Mode Etendu ..."
    5. Faire "Remplacer tout"

    Tu dois obtenir ça :
    insert into ressource (id, idpat, conditionning)
    values (1,2,3);
    (4,5,6);
    (7,8,3);
    Etape 3 : remplacer les point virgules de la liste values par des virgules sauf le dernier
    1. Sélectionnes toutes les lignes comprises entre "values (1,2,3)" et l'avant dernière des valeurs à insérer, soit (4,5,6) dans mon cas
    2. Faits "CTRL H" ou "remplacer"
    3. Mets ");" dans le champ "Rechercher"
    4. Mets ")," dans le champs "Remplacer par"
    5. Coche la cas "Dans sélecetion"
    6. Cliques sur "Mode Normal"
    7. Faits "Remplacer Tout"

    Note : si tu n'a pas envie de sélectionner les lignes, tu remplaces tout et tu changes à la main la dernière virgule par un point virgule pour le dernier groupe de values.

    Voilà à peu près le principe, tu auras peut-être quelques ajustements selon le contenu réel de ton fichier.
    Ce qu'il faut savoir avec Notepad++ c'est que les regex ne sont pas totalement gérées et qu'il faut jouer avec le mode étendu pour les caractères de fin de lignes en particulier.

    Tu as probablement résolu le problème depuis, mais ça pourra servir à quelqu'un d'autre, et puis c'est un jeu de résoudre un problème pour moi comme je pense pour beaucoup de gens sur ce forum !

    Cordialement

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Bonjour semaphore1984,

    Merci pour ta solution. C'est effectivement ça que je voulais faire sous Notepad++ mais sans succès. Au final, je m'en étais sorti en important le fichier .sql dans Excel et je supprimé toutes les colonnes qui étaient en doublon.

    Je garde bien précieusement ta méthode.

    Merci encore .
    A+.

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

Discussions similaires

  1. [langage] [Expression][Régulière] motif
    Par Cyspak dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2003, 14h24
  2. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45
  3. Réponses: 2
    Dernier message: 16/06/2003, 15h15
  4. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06
  5. [langage] expression reguliere motif répétitif dans 1 pattern
    Par comme de bien entendu dans le forum Langage
    Réponses: 11
    Dernier message: 09/04/2003, 16h14

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