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

Linux Discussion :

sed et retour à la ligne


Sujet :

Linux

  1. #41
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    #On définit une chaîne de caractère que l'on cherche et qui comment par $.*=.*reqmysql , par contre pourquoi |\t\+\ je n'ai pas compris ca
    /\(^\|\t\+\)\$.*=.*reqmysql/{
    Essayons de faire clair...

    ^ Désigne une chaîne nulle en début de ligne.

    \t Désigne une tabulation.

    \+ Correspond à une ou plusieurs occurrence(s) de l'expression précédente. (ici la tabulation)

    ^$ On cible le caractère dollar situé en début de ligne

    \| Un pipe entre 2 motifs permet de faire un OU. Le caractère doit être protégé pour ne pas être interprété littéralement.

    \(...\) Permet de regrouper des expressions régulières.

    \(^\|\t\+\)\$ Le pipe (\|) est placé entre le caractère marquant le début d'une ligne (^) et la ou les tabulation(s) (\t\+) et ces expressions régulières sont regroupées entre parenthèses et ceci avant le signe dollar($) protégé pour l'occasion afin qu'il ne soit pas interprété comme la fin de la ligne.
    Donc il faut lire qu'on cherche soit un signe dollar en début de ligne, soit une ou plusieurs tabulations suivie(s) du signe dollar.

    On doit pouvoir en fin de compte se passer du OU et donc du pipe et par la même des sous-expressions (entre parenthèses), un truc comme ça ^\t*\$.*=.*reqmysql/{ devrait suffire....



    #là je n'ai pas compris, \n signifie saut de ligne
    /\n *$/{
    Oui. J'ai rajouté cette condition en rapport à tes lignes vides dans tes fichiers d'hier. Mais bon, je suppose qu'avec la dernière modification de ce matin (l'ajout de =.*reqmysql), ce n'est plus nécessaire

    En fin de compte essaies ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    :z
    /^\t*\$.*=.*reqmysql/{
    /) *\(;\|; *#.*\)$/ !{
        N
        b z
    }
    /^\t*\$.*) *\(;\|; *#.*\)$/ {
    s/\(.*\$[^ ]*[^=]*\)\( *=.*reqmysql.*) *;.*\)$/\1\2\n\1->execute();/
        b
    }
    }

  2. #42
    Membre à l'essai
    Inscrit en
    Octobre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bon eh bien merci bien zipe pour m'avoir suivi pendant tout ce topic et pour toutes tes explications, effectivement le code de ton dernier poste à l'air de suffire pour gérer toutes les possibilités.

    Je boucle donc ce topic en résolu, et espère ne pas avoir à le réouvrir ^^.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Retour à la ligne après une certaine balise (sed ?)
    Par openlife dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/04/2011, 19h32
  2. Caractère de retour à la ligne.
    Par Pari dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2009, 09h59
  3. [JTextArea] Fichier et retour à la ligne
    Par eraim dans le forum Composants
    Réponses: 4
    Dernier message: 23/06/2004, 08h21
  4. [MFC] Retour à la ligne dans un CEdit
    Par Kant dans le forum MFC
    Réponses: 7
    Dernier message: 18/02/2004, 08h58
  5. Conserver les retours à la ligne
    Par arwen dans le forum ASP
    Réponses: 2
    Dernier message: 04/12/2003, 12h50

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