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 :

Sed et Regex


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut Sed et Regex
    Bonjour, je cherche à récupérer une chaîne de caractère dans un fichier en fonction d'un pattern, cependant avec la commande sed je n'y parvient pas
    Je dois récupérer les chaines : bdd_name, my_user et my_pass

    Le contenu du fichier :
    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
    $databases = array (
      'default' =>
      array (
        'default' =>
        array (
          'database' => 'bdd_name',
          'username' => 'my_user',
          'password' => 'my_pass',
          'host'     => 'localhost',
          'port'     => '',
          'driver'   => 'mysql',
          'prefix'   => 'adom_',
        ),
      ),
    );
    Ma commande de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -ne "/      ''database' => '(.*)'/p" settings.php

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Une version sed et une version awk:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ sed -ne "/database/s/.*'\(.*\)'.*/\1/p" settings.php
    bdd_name
    $ awk -F\' '/\<database\>/{print $4;}' settings.php
    bdd_name

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    et une version Perl en prime :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ perl -lne "print \$1 if /'(?:database|username|password)' => '(.+?)',/" fichier
    bdd_name
    my_user
    my_pass

  4. #4
    Expert confirmé

    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
    Par défaut
    Salut @ tou(te)s,

    Et une avec grep, ça vous dit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ grep -Po "(database|username|password)'[^']*'\K[^']*"  fich 
    bdd_name
    my_user
    my_pass

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bonjour,

    Reste plus que la version builtin :
    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
    16
    $ cat setting.php 
    $databases = array (
      'default' =>
      array (
        'default' =>
        array (
          'database' => 'bdd_name',
          'username' => 'my_user',
          'password' => 'my_pass',
          'host'     => 'localhost',
          'port'     => '',
          'driver'   => 'mysql',
          'prefix'   => 'adom_',
        ),
      ),
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ $(echo -e "ZXZhbCB3aGlsZSBJRlM9XCcgcmVhZCBhIGEgYiBiIGM7IGRvIGNhc2UgJGEgaW4g\nZGF0YWJhc2V8dXNlcm5hbWV8cGFzc3dvcmQpIGVjaG8gJGIgOzsgZXNhYyA7IGRv\nbmU8Cg==" | openssl enc -d -a ) setting.php 
    bdd_name
    my_user
    my_pass

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    +1 mais vraiment parceque c'est sale

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

Discussions similaires

  1. [Shell scripting] Question sur sed et regex
    Par Antheadousa dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/05/2014, 10h37
  2. Comment faire des remplacements dans des fichiers (sed + regex)
    Par vinok972 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 04/12/2012, 12h50
  3. [regex] substitution avec sed
    Par tiresias54 dans le forum Linux
    Réponses: 6
    Dernier message: 26/04/2012, 16h26
  4. [SED] [REGEX] : caractères interprétables
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 22/10/2010, 17h15
  5. Réponses: 4
    Dernier message: 28/04/2009, 12h38

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