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 :

Il y a t-il un équivalent de -exec {} /; pour grep comme dans find ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2009
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 205
    Par défaut Il y a t-il un équivalent de -exec {} /; pour grep comme dans find ?
    Bonjour,

    j'ai un fichier simple nommé fichier.txt dont le contenu est basique comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    aaa
    bbb
    ccc
    ddd
    eee
    Ensuite je tape la commande grep pour affichier ligne par ligne le contenu du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep -i "[a-z]" ./fichier.txt
    Ensuite, je voudrais ajouter en plus un traitement basique comme afficher un "Hello World !", à chaque ligne retournée par grep.

    Le code serait du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep -i "[a-z]" ./fichier.txt -exec echo "Hello World !" {} /;
    Ce code ne marche pas car le -exec {} /; ne marche que pour find.

    Donc ma question est la suivante :
    comment appliquer un traitement supplémentaire à chaque ligne retournée par grep ?

    Merci d'avance pour vos réponses, cordialement.

    PS : je sais qu'il y a une méthode alternative, qui est de mettre les données du fichier dans une variable de type array et de boucler la variable array, mais j'évite cette méthode car j'en ai des milliers des données (donc qui consommeront beaucoup de mémoire si je les met toutes dans une variable array).

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Avec un pipe et une boucle read, tu fais tout ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -i "[a-z]" ./fichier.txt | while read ; do echo "Hello World !" ${REPLY} ; done
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    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,

    Peut-être suis-je totalement HS, mais au cas ou...

    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
    17
    $ cat plop 
    aaa
    bbb
    ccc
    123
    ddd
    567
    eee
     
    $ sed -n 's/[a-z]\+/Hello World ! &/p' plop 
    Hello World ! aaa
    Hello World ! bbb
    Hello World ! ccc
    Hello World ! ddd
    Hello World ! eee
     
    $

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    c'est faisable avec awk aussi bien sûr.

    avec xargs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -i "[a-z]" ./fichier.txt | xargs -IpeuImporte echo "hello world ! peuImporte"
    maintenant, tu as le choix.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre très actif
    Inscrit en
    Février 2009
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 205
    Par défaut
    Bonjour,

    FANTASTIQUE !

    merci à vous tous, c'est exactement ce qu'il me fallait.

    +1 pour tout le monde.

    Merci encore. Résolu

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/12/2005, 18h49
  2. Quel est l'équivalent de Findcomponent pour les Forms ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 12
    Dernier message: 23/09/2005, 12h48
  3. équivalent SQL*Loader pour FB / IB
    Par djeant dans le forum Outils
    Réponses: 9
    Dernier message: 10/01/2005, 21h26
  4. Équivalent de Seek pour un TextFile
    Par WebPac dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2004, 15h01
  5. Réponses: 3
    Dernier message: 09/04/2004, 23h35

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