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 :

Signification de plusieurs commandes


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Signification de plusieurs commandes
    Bonjour.

    S'il vous plait je peux savoir la signification de ces commandes ? Je suis un débutant sur fedora.

    1 - grep -E '^con' fich ;
    2 - grep -E 'ing$' fich ;
    3 - grep -v -E '^con' fich ;
    4 - grep -v -E 'ing$' fich ;
    5 - grep -E '^[A-Z' fich ;
    6 - grep -E '[A-Z]$' fich ;
    7 - grep -E '^[A-Z]*$' fich ;
    8 - grep -E '^[aeiouAEIOU]' fich ;
    9 - grep -E '[aeiouAEIOU]$' fich ;
    10 - grep -i -E '^[^aeiou]' fich ;
    11 - grep -i -E '[aeiou].*[aeiou]' fich ;
    12 - grep -iE '^[^aeiou]*[aeiou][^aeiou]*$' fich ;
    13 - grep "ab*c" fich ;
    14 - grep "^s.*n$" fich ;
    15 - grep "^[a-zA-Z][a-zA-Z0-9]*"[a-f] *.txt ;
    16 - grep \*$ fich.

    Merci d'avance mes chers amis

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    Bonjour.

    Il faut commencer par se documenter avec les bons outils, à commencer par le man.

    En console man grep devrait vous être très utile.
    Vous avez également les versions des manpages en Français sur developpez.com : http://man.developpez.com/man1/grep/

    Vous pourrez y trouver des explications répondant à vos questions comme :

    grep [OPTIONS] MOTIF [FICHIER. . .]
    grep recherche dans les FICHIERs indiqués les lignes correspondant à un certain MOTIF. Par défaut, grep affiche les lignes qui contiennent une correspondance au motif. L'entrée standard est lue si FICHIER est omis ou si FICHIER vaut « - ».
    Ou encore sur les options utilisées :

    -E, --extended-regexp
    Interpréter le MOTIF comme une expression rationnelle étendue (ERE, voir ci-dessous). (-E est une spécification POSIX.)
    -i, --ignore-case
    Ignorer la casse aussi bien dans le MOTIF que dans les fichiers. (-i est une spécification POSIX.)
    Ceci devrait vous permettre de répondre à l'ensemble de vos questions (en vous renseignant aussi sur la signification de chaque motif utilisé).

    Par exemple pour celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -i -E '^[^aeiou]' fich
    grep va rechercher les lignes correspondant au pattern ^[^aeiou].
    [^aeiou] = "un caractère qui n'est pas 'a' ou 'e' ou 'i' ou 'o' ou 'u'.
    ^[^aeiou] = "commence par un caractère qui n'est pas 'a' ou 'e' ou 'i' ou 'o' ou 'u'.

    -E pour indiquer qu'il faut interpréter le motif comme une expression rationnelle étendue (une regexp quoi)
    -i pour ne pas tenir compte de la casse, autrement dit cela revient à écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -E '^[^aeiouAEIOU]' fich
    Cordialement,
    Idriss

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Points : 376
    Points
    376
    Par défaut
    Pour la commande grep et ses options, un man grep devrait être suffisant pour comprendre: http://unixhelp.ed.ac.uk/CGI/man-cgi?grep

    De façon générale, grep -option 'chaine de charactère' fichier.txt

    affichera à l'écran les lignes du fichier.txt contenant la chaine (sauf erreur de ma part)



    Pour le reste, il s'agit des expression régulière du shell

    ^ symbolise début de ligne
    $ symbolise fin de ligne
    [A-Z] désigne un caractère quelconque compris entre A et Z
    [AZ] désigne le caractère A ou le caractère Z


    En espérant avoir pu t'aider avec mon maigre niveau de L2 info qui passe en rattrapage système x)

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 482
    Points
    19 482
    Par défaut
    Bonjour,

    j'ajouterais le man 7 regex.

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Donc on peut dire que grep -E '^[^aeiouAEIOU]' : chercher les lignes ne commençant pas par "a" ou "e" ou "i" ou "o" ou "u" ?

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    Pas uniquement

    [^aeiouAEIOU] = aucun caractère parmi "a,e,i,o,u,A,E,I,O,U".

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Quelqu'un peux m'aider pour savoir si j'ai des erreurs ou pas sur les signification des commandes suivantes ?

    1 - grep -E '^con' fich : chercher les lignes qui commençant par con.
    2 - grep -E 'ing$' fich : chercher les lignes qui terminant par ing ,
    3 - grep -v -E '^con' fich : chercher les lignes qui se commencant pas par con , ( par ce que -v inverse la rechrche )
    4 - grep -v -E 'ing$' fich : chercher les lignes qui se terminant pas par ing?
    5 - grep -E '^[A-Z]' fich : chercher les lignes qui commencant par une majuscule
    6 - grep -E '[A-Z]$' fich : chercher les lignes qui terminant par une majuscules
    7 - grep -E '^[A-Z]*$' fich : chercher les lignes qui commencant ou se terminant par une majuscule
    8 - grep -E '^[aeiouAEIOU]' fich : chercher les lignes qui commence par a ou e ou i ou o ou u
    9 - grep -E '[aeiouAEIOU]$' fich : chercher les lignes qui termine par a ou e ou i ou o ou u
    10 - grep -i -E '^[^aeiou]' fich : chercher les lignes ne commençant pas par a ou e ou i ou o ou u
    11 - grep -i -E '[aeiou].*[aeiou]' fich : chercher les lignes qui contenant uniquement les a ou e ou i ou o ou u.
    12 - grep -iE '^[^aeiou]*[aeiou][^aeiou]*$' fich : chercher les lignes qui commençant pas ou se termine par a ou e ou i ou o ou u
    13 - grep "ab*c" fich : ??
    14 - grep "^s.*n$" fich : ??
    15 - grep "^[a-zA-Z][a-zA-Z0-9]*"[a-f] *.txt : ??
    16 - grep \*$ fich : ??

    Merci d'avance.

  8. #8
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    1 et 2 => oui
    3 => non : en effet -v inverse la recherche, mais l'inverse de "commence par 'con'" c'est pas "termine par 'con'" mais "ne commence pas par 'con'"
    4 => non plus => "ne termine pas par 'ing'"
    5 et 6 => oui
    7 => non pas exactement, mais il y a de l'idée => "chercher des lignes vides ou ne contenant que des majuscules (* = 0 ou plusieurs)"
    8 => tu oublis les autres caractères de la liste => "commence par un des caractères suivants => a,e,i,o,u,A,E,I,O,U"
    9 => tu oublis encore les autres caractères de la liste => "se termine par un des caractères suivants => a,e,i,o,u,A,E,I,O,U"
    10 => non car l'option -i est active, donc => "ne commence pas par un des caractères suivants => a,e,i,o,u,A,E,I,O,U"
    11 => non car .* signifie "caractère quelconque répété 0 à plusieurs fois"
    12 => non : ^[^aeiou]*[aeiou][^aeiou]*$ :
    - commence par 0 ou plusieurs caractères qui ne sont pas a,e,i,o,u,A,E,I,O,U (car -i)
    - suivi d'un caractère parmi a,e,i,o,u,A,E,I,O,U (car -i)
    - et termine par 0 ou plusieurs caractères qui ne sont pas a,e,i,o,u,A,E,I,O,U (car -i)

    Pour les autres :

    13 - grep "ab*c" fich : contient "a" suivi de 0 ou plusieurs "b" suivi de "c"
    14 - grep "^s.*n$" fich : commence par "s" suivi de n'importe quoi et termine par "n"
    15 - grep "^[a-zA-Z][a-zA-Z0-9]*"[a-f] *.txt : commence par n'importe quelle lettre suivi de 0 ou plusieurs lettres ou digits
    16 - grep \*$ fich : termine par "*" (échappé pour ne pas être interprété par le shell ou par grep lorsque l'expression est entre doubles quotes)

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 276
    Points : 13 553
    Points
    13 553
    Par défaut
    Bonjour,

    12 => garde les lignes ne contenant qu'une seule voyelle.

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par midom3n Voir le message
    Quelqu'un peux m'aider pour savoir si j'ai des erreurs ou pas sur les signification des commandes suivantes ?

    1 - grep -E '^con' fich : chercher les lignes qui commençant par con.
    2 - grep -E 'ing$' fich : chercher les lignes qui terminant par ing ,
    3 - grep -v -E '^con' fich : chercher les lignes qui se commencant pas par con , ( par ce que -v inverse la rechrche )
    4 - grep -v -E 'ing$' fich : chercher les lignes qui se terminant pas par ing?
    5 - grep -E '^[A-Z]' fich : chercher les lignes qui commencant par une majuscule
    6 - grep -E '[A-Z]$' fich : chercher les lignes qui terminant par une majuscules
    7 - grep -E '^[A-Z]*$' fich : chercher les lignes qui commencant ou se terminant par une majuscule
    8 - grep -E '^[aeiouAEIOU]' fich : chercher les lignes qui commence par a ou e ou i ou o ou u
    9 - grep -E '[aeiouAEIOU]$' fich : chercher les lignes qui termine par a ou e ou i ou o ou u
    10 - grep -i -E '^[^aeiou]' fich : chercher les lignes ne commençant pas par a ou e ou i ou o ou u
    11 - grep -i -E '[aeiou].*[aeiou]' fich : chercher les lignes qui contenant uniquement les a ou e ou i ou o ou u.
    12 - grep -iE '^[^aeiou]*[aeiou][^aeiou]*$' fich : chercher les lignes qui commençant pas ou se termine par a ou e ou i ou o ou u
    13 - grep "ab*c" fich : ??
    14 - grep "^s.*n$" fich : ??
    15 - grep "^[a-zA-Z][a-zA-Z0-9]*"[a-f] *.txt : ??
    16 - grep \*$ fich : ??

    Merci d'avance.
    [GRAMMAIRE]
    J'aurais plutôt dit:
    * les lignes qui commencent
    * les lignes qui se terminent
    * les lignes qui contiennent
    ou bien
    * les lignes commençant
    * les lignes se terminant
    * les lignes contenant
    plus les négatives laissées en exercice au lecteur...
    [/GRAMMAIRE]

Discussions similaires

  1. plusieurs commandes même client
    Par pierrot67 dans le forum Bases de données
    Réponses: 5
    Dernier message: 22/05/2006, 09h36
  2. Plusieurs commandes avec 1 seule R-commande
    Par pouldo dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/04/2005, 19h44
  3. plusieur commande en dos
    Par metalpetsFR dans le forum Windows
    Réponses: 3
    Dernier message: 14/08/2004, 04h56
  4. [.bat][FOR][IF]executer plusieurs commandes a la suite
    Par ¤FRIX¤ dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 23/03/2004, 10h24
  5. Plusieurs commandes en meme temps
    Par caribou_belle dans le forum Linux
    Réponses: 7
    Dernier message: 18/09/2003, 18h07

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