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 :

Extraire d'un texte les lignes où il y a '2' et 'a'


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 16
    Points
    16
    Par défaut Extraire d'un texte les lignes où il y a '2' et 'a'
    Bonsoir,
    J'ai un fichier texte:
    1 a b
    2 a c
    1 b a
    4 a a
    2 c a
    2 b d
    Je dois afficher les lignes qui contiennent 2 et a :
    J'ai la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep 2 fichiertexte
    grep a fichiertexte
    mais j'arrive pas a afficher seulement les lignes qui contienne 2 et a, j'ai essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep (.*2.*.a.*)|(.*a.*.2.*)
    mais ça fonctionne pas
    Merci de votre aide

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    continues à réflechir à la regexp adapté c'est bien la bonne facçon ... faut juste que tu trouve la bonne regexp

  3. #3
    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 376
    Points
    19 376
    Par défaut
    t'as compris : tu te "débrouilles" tout seul !

    essaye avec grep -E : grep peut utiliser plusieurs types de regex. regarde le man.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par darkBiche Voir le message
    Bonsoir,
    J'ai un fichier texte:
    Merci d'utiliser la balise code (sélectionne le texte et clique le bouton "#")!

    Comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     1 a b 
     2 a c 
     1 b a 
     4 a a 
     2 c a 
     2 b d
    Je dois afficher les lignes qui contiennent 2 et a :
    J'ai la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep 2 fichiertexte
    grep a fichiertexte
    Tu peux enchaîner ces 2 commandes (avec un pipe '|') ou bien trouver une expression régulière...

    mais j'arrive pas a afficher seulement les lignes qui contienne 2 et a, j'ai essayer grep (.*2.*.a.*)|(.*a.*.2.*) mais sa fonctionne pas
    Merci de votre aide
    Tu es sur la bonne voie!
    Mais la syntaxe est (un_truc|un_autre_truc) et non (un_truc)|(un_autre_truc)!
    Dans ton cas, il est inutile de commencer et terminer l'expression par ".*".
    Et pense à mettre l'expression entre apostrophes ou entre guillemets.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    J'essaye avec l'expression reguliere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep "2.*a" montexte.txt
    grep "a.*2" montexte.txt
    alors je fusionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "2.*a"\|"a.*2" montexte.txt
    mais sa marche pas

  6. #6
    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 376
    Points
    19 376
    Par défaut
    pourquoi "découper" ta regex avec des guillemets ?
    si le pipe n'est pas dans la regex elle ne sera pas interprétée en tant que signe d'"alternative".
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par darkBiche Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "2.*a"\|"a.*2" montexte.txt
    mais sa marche pas
    t'étais pas très loin (ce que sous-entendait frp31 plus haut), grep "2.*a|a.*2" montexte.txt ou encore grep "2" montexte.txt | grep "a"

  8. #8
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    j'ai trouver c'est l'exprssion entre les guillemets qui est tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "2.*a\|a.*2" texte.txt
    sa marche

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

Discussions similaires

  1. Réponses: 25
    Dernier message: 13/06/2007, 18h09
  2. Boucle qui parcourt tout les ligne d'un fichier text
    Par accro-macro dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/05/2007, 20h21
  3. Réponses: 2
    Dernier message: 19/09/2006, 21h34
  4. [XSLT][->texte] les fameux retour chariot et a la ligne
    Par SOPRA-Eherve dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/06/2006, 23h14
  5. Réponses: 2
    Dernier message: 18/10/2005, 08h05

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