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 :

grep motif ET motif


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut grep motif ET motif
    Désolé de revenir sur le sujet fermé depuis longtemps, mais bon.

    Je galère pas mal pour faire à peu près la même chose SAUF QUE je cherche deux suites de caractères appartenant à un fichier.

    C'est à dire faire un ET et pas un OU
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find resultat -type f -exec grep '\(tache\|Temps\|Power\)' {} \; > resultat/resultat.txt
    Je remplace les | par des & et cela ne fonctionne pas. Mais pourquoi donc?

  2. #2
    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
    Par défaut
    Citation Envoyé par blancheln Voir le message
    Je galère pas mal pour faire à peu près la même chose SAUF QUE je cherche deux suites de caractères appartenant à un fichier.
    Dans la même ligne ou pas?

    Peux-tu donner un exemple de ce que tu veux?


    C'est à dire faire un ET et pas un OU
    dans:
    find resultat -type f -exec grep '\(tache\|Temps\|Power\)' {} \; > resultat/resultat.txt

    je remplace les | par des & et cela ne fonctionne pas. Mais pourquoi donc?
    ce n'est pas si simple...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    tu peux être plus précis ?
    donne un extrait du fichier entrée, et ce que tu veux obtenir.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Déjà, je cherche les fichiers dans un répertoire contenant deux suites de caractères.
    Ces fichier sont zippés, j'utilise donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12"'&'SL="FRKMN' {}  \;
    cela ne fonctionne pas. Ca marche qu'avec une seule suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12"' {}  \;

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Citation Envoyé par jack-ft
    Dans la même ligne ou pas?
    !
    un motif est toujours avant l'autre, ou est-ce aléatoire ?
    ...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    La deuxième recherche , balise SL, est toujours Après la balise DA

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    he, jack, va chercher une tenaille, on tient un bon morceau, j'crois qu'ça va venir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep 'motif1.*motif2' fichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    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
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    he, jack, va chercher une tenaille, on tient un bon morceau, j'crois qu'ça va venir...
    Ouais... c'est pas faux!

    Donc, au risque de me répéter, il est important (notamment pour nous) de savoir si les 2 motifs sont toujours dans la même ligne ou s'ils peuvent être dans 2 lignes différentes.

    Avec un exemple, on pourrait le voir assez aisément...

    Comme nos questions sont restées sans réponse, malgré les réitérations, je ferai, comme N_BaH, l'hypothèse qu'ils sont dans la même ligne, et je propose donc d'instancier la proposition de N_BaH:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep 'motif1.*motif2' fichier
    en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12".*SL="FRKMN' {}  \;

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Bonjour à tous les deux.
    A la question si les 2 motifs sont toujours dans la même ligne, j'aurai répondu que non. Il s'agit de traiter des xml sur leurs champs date (DA) et une balise métier (SL, qui contient le code criée des ventes de poisson).
    Comme le xml est sur plusieurs lignes, je dirai donc que non.

    Mais la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12".*SL="FRKMN' {}  \;
    donne l'impression de fonctionner. Le point concatène avec n'importe quoi après *.
    Merci beaucoup, j'ai vraiment passer 2 heures à chercher ça, quand on y connait pas grand chose..
    Si vous pouviez me dire la différence s'ils avait été sur plusieurs lignes...


    Et juste comme ça, vous tenez un morceau de quoi? y en a un qu'a mal au dent?

  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
    Par défaut
    Citation Envoyé par blancheln Voir le message
    Bonjour à tous les deux.
    A la question si les 2 motifs sont toujours dans la même ligne, j'aurai répondu que non. Il s'agit de traiter des xml sur leurs champs date (DA) et une balise métier (SL, qui contient le code criée des ventes de poisson).
    Comme le xml est sur plusieurs lignes, je dirai donc que non.

    Mais la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12".*SL="FRKMN' {}  \;
    donne l'impression de fonctionner.
    Il est totalement IMPOSSIBLE que ce code fonctionne si les motifs sont sur des lignes différentes!...
    à moins qu'on ne soit dans un environnement hétérogène (fichier provenant d'un mac ou d'un PC...)

    Le point concatène avec n'importe quoi après *.
    Pas du tout!

    L'instruction demande à grep de chercher une chaîne contenant le caractère D suivi d'un A suivi d'un = suivi d'un " suivi d'un 2 suivi d'un 0 suivi d'un 1 suivi d'un 2 suivi d'un - suivi d'un 1 suivi d'un 0 suivi d'un - suivi d'un 1 suivi d'un 2 suivi d'un " suivi de n'importe quel caractère (.) en nombre quelconque (*) suivi d'un S suivi d'un L suivi d'un = etc.

    Merci beaucoup, j'ai vraiment passer 2 heures à chercher ça, quand on y connait pas grand chose..
    Si vous pouviez me dire la différence s'ils avait été sur plusieurs lignes...
    ça dépend!

    Déjà est-ce que tu veux le nom des fichiers ou la/les lignes?

    s'il n'y a qu'un seul DA et SL par fichier (et pas d'espace dans les noms des fichiers), c'est relativement simple (je ne suis pas un pro du find!):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -print | xargs zipgrep -l 'DA="2012-10-12"' | xargs zipgrep -l 'SL="FRKMN'
    Sinon, c'est beaucoup plus compliqué!
    Il faut presque parser le xml...

    Et juste comme ça, vous tenez un morceau de quoi? y en a un qu'a mal au dent?
    C'est juste qu'on a un peu de mal à obtenir les informations (comme un exemple de fichier, par exemple)...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    un morceau de toutes les informations nécessaires pour te répondre correctement.

    le point représente n'importe quel caractère, et l'astérisque, n'importe quel nombre du caractère précédent, ou aucun.

    si les données avaient été sur plusieurs lignes, je me serais tourné du côté de sed.
    genre
    Code NON TESTÉ : Sélectionner tout - Visualiser dans une fenêtre à part
    find [..] -exec zcat {} | sed -n '/DA="2012-10-12"\|SL="FRKMN"/p' \;
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Bon ok je me précipite, j'avais l'impression que c'était gagné et pis en fait je suis encore à la ramasse. Mais c'est pas grave, avec du courage..
    Bon, ce sont des fichier xml zipper déposés sur une machine redhat mais construits je ne sais pas avec quoi.
    Ils contiennent les ventes de produit de la mer de toutes les criées françaises, pour la petite histoire, avec plein d'info hyper grave pour les pêcheurs.

    Un fichier peut contenir plusieurs ventes dans différentes criée, donc plusieurs balise SL avec des valeurs différentes.
    Mais toutes ont la même date. Il y aura plusieurs fois le balise DA mais la valeur sera toujours la même.
    Je cherche donc les xml.zip contenant les ventes du aaaa/mm/jj: DA="aaaa/mm/jj" pour la crié de La Rochelle par exemple : DA="FRLRH".

    Le nom des fichiers contient l'information de la date de dépôt des notes de vente, ce qui est hors sujet.

    Je vous met un fichier anonymisé.
    Fichiers attachés Fichiers attachés

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    autant que je me souvienne sed ne sait pas afficher le nom du fichier en cours de lecture, donc on va utiliser awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find [...] -exec zcat {} | awk -v date="$date" -v port="$port" '{if($0 ~ "DA=\""date"\""){if($0 !~ ">$"){getline}; if($0 ~ "SL=\""port"\""){print FILENAME;exit}}}'
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    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
    Par défaut
    Citation Envoyé par blancheln Voir le message
    Je vous met un fichier anonymisé.
    Tu vois? quand tu veux...

    Citation Envoyé par N_BaH Voir le message
    autant que je me souvienne sed ne sait pas afficher le nom du fichier en cours de lecture, donc on va utiliser awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find [...] -exec zcat {} | awk -v date="$date" -v port="$port" '{if($0 ~ "DA=\""date"\""){if($0 !~ ">$"){getline}; if($0 ~ "SL=\""port"\""){print FILENAME;exit}}}'
    Euh... Y a un petit bug!
    Comme on peut le constater (à cause du formatage dû aux viviers quiberonnais), la ligne SL n'est pas toujours la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                <ers:SLI_NAT CN="60014" DA="2012-08-07" NB="LES VIVIERS QUIBERONNAIS" NS="SAINT GUENOLE"
                             SC="FRA"
                             SL="FRSFV">
    Ce serait dommage de louper une occurrence à cause de ça!
    Du coup, il suffit peut-être de remplacer if($0 !~ ">$"){getline}; par while($0 !~ ">$"){getline};, non ?

    Cependant (et grâce à la précision des specs), si DA est toujours la même dans tout le fichier et s'il suffit d'une occurrence du SL cherché pour sélectionner le fichier, je maintiens ma proposition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -print | xargs zipgrep -l 'DA="2012-10-12"' | xargs zipgrep -l 'SL="FRKMN'
    qui, quoique peu efficace, devrait fonctionner! (sous réserve que zipgrep -l se comporte comme grep -l)

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Vendredi, tout seul, j'en étais à ce genre de fonction et j'ai jamais réussi à m'en dépatouiller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -print | xargs zipgrep -l 'DA="2012-10-12"' | xargs zipgrep -l 'SL="FRKMN'

    Là, elle me renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    caution: filename not matched: /var/www/html/msipa/venteOP/xml/originaux/NNB20121019001047.xml.zip
    caution: filename not matched:  /var/www/html/msipa/venteOP/xml/originaux/NNB20121019000650.xml.zip
    usage: zipgrep [egrep_options] pattern zipfile [members...]
    searches the given zip members for a string or pattern
    Par contre, le fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/ -name '*.zip' -exec zipgrep  'DA="2012-10-13".*SL="FRLRH' {}  \;
    est toujours en train de tourner et m'a retournée un nom de fichier déjà.
    A oui, j'avais oublié de dire,, j'ai + de 50 000 fichiers dans une 12aine de sous répertoire.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    La commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zcat {} | sed -n '/DA="2012-10-12"\|SL="FRKMN"/p' \;
    renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find: Paramètre manquant pour « -exec »
    sed: impossible de lire ;: Aucun fichier ou répertoire de ce type
    et la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zcat {} | awk -v date="$date" -v port="$port" '{if($0 ~ "DA=\""date"\""){while($0 !~ ">$"){getline}; if($0 ~ "SL=\""port"\""){print FILENAME;exit}}}'
    renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find: Paramètre manquant pour « -exec »
    la commande (montée d'un cran pour avoir tous les sous répertoire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/ -name '*.zip' -exec zipgrep  'DA="2012-10-13".*SL="FRKMN' {}  \;
    est terminée et m'a renvoyée qq fichiers qui vont bien.
    Mais, dois je la mettre en prod? Non semblerait-il?

    Sinon, une solution un peu lourde, serait de faire une première recherche avec juste les DA="2012-10-12", faire une copie des fichiers dans un rep temp et de relancer une recherche sur les SL dans ce rep temp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zipgrep  'DA="2012-10-12"' {}  \; -exec mv {} /var/www/html/msipa/venteOP/recherche_nve/xml  \;
    C'est pas très rigolo mais c'est ce que j'ai trouvé de mieux.
    Je me plante?

  17. #17
    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
    Par défaut
    Citation Envoyé par blancheln Voir le message
    La commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zcat {} | sed -n '/DA="2012-10-12"\|SL="FRKMN"/p' \;
    renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find: Paramètre manquant pour « -exec »
    sed: impossible de lire ;: Aucun fichier ou répertoire de ce type
    Grand classique: il faut un ';' (de préférence backslashé, et, de préférence, préfixé d'une espace) à la fin de l'exec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zcat {} \; | sed -n '/DA="2012-10-12"\|SL="FRKMN"/p' \;
    et la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zcat {} | awk -v date="$date" -v port="$port" '{if($0 ~ "DA=\""date"\""){while($0 !~ ">$"){getline}; if($0 ~ "SL=\""port"\""){print FILENAME;exit}}}'
    renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find: Paramètre manquant pour « -exec »
    idem

    la commande (montée d'un cran pour avoir tous les sous répertoire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/ -name '*.zip' -exec zipgrep  'DA="2012-10-13".*SL="FRKMN' {}  \;
    est terminée et m'a renvoyée qq fichiers qui vont bien.
    Mais, dois je la mettre en prod? Non semblerait-il?
    Est-ce qu'elle retourne le nom du fichier ??? ou bien la ligne ?
    A cause du formatage, il doit arriver parfois (quoique rarement!) que les 2 tags soient sur la même ligne, ce qui expliquerait le match que tu as observé.

    Sinon, une solution un peu lourde, serait de faire une première recherche avec juste les DA="2012-10-12", faire une copie des fichiers dans un rep temp et de relancer une recherche sur les SL dans ce rep temp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zipgrep  'DA="2012-10-12"' {}  \; -exec mv {} /var/www/html/msipa/venteOP/recherche_nve/xml  \;
    C'est pas très rigolo mais c'est ce que j'ai trouvé de mieux.
    Je me plante?
    Dans le même genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -exec sh -c 'f="{}";tf=/tmp/tmp_file;rm -rf ${tf};zcat ${f}>${tf};grep -q \'DA="2012-10-12"\' ${tf} && grep -q \'SL="FRKMN"\' ${tf}&&echo ${f}' \;
    Citation Envoyé par blancheln Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -print | xargs zipgrep -l 'DA="2012-10-12"' | xargs zipgrep -l 'SL="FRKMN'
    Là, elle me renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    caution: filename not matched: /var/www/html/msipa/venteOP/xml/originaux/NNB20121019001047.xml.zip
    caution: filename not matched:  /var/www/html/msipa/venteOP/xml/originaux/NNB20121019000650.xml.zip
    usage: zipgrep [egrep_options] pattern zipfile [members...]
    searches the given zip members for a string or pattern
    Nous n'avons pas le même zipgrep! Le mien admet plusieurs fichiers, ce qui ne semble pas être le cas du tien. Il faut donc les traiter un par un.


    A oui, j'avais oublié de dire,, j'ai + de 50 000 fichiers dans une 12aine de sous répertoire.
    Oops! Bonjour les perfs!

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Est-ce qu'elle retourne le nom du fichier ??? ou bien la ligne ?
    A cause du formatage, il doit arriver parfois (quoique rarement!) que les 2 tags soient sur la même ligne, ce qui expliquerait le match que tu as observé.
    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zipgrep  'DA="2012-10-17".*SL="FRCOC"' {}  \;
    retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    NNB20121017000573.xml:            <ers:SLI CN="225447" DA="2012-10-17" NB="INVENDUS" NS="CONCARNEAU" SC="FRA" SL="FRCOC">
    ...
    par contre
    Grand classique: il faut un ';' (de préférence backslashé, et, de préférence, préfixé d'une espace) à la fin de l'exec:
    Code :Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/msipa/venteOP/xml/originaux -name '*.zip' -exec zcat {} \; | sed -n '/DA="2012-10-12"\|SL="FRKMN"/p' \;
    retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    find: zcat a terminé son exécution par le signal 13
    find: zcat a terminé son exécution par le signal 13
    ...
    j'ai très envie de n'utiliser que
    zipgrep 'DA="2012-10-17".*SL="FRCOC"' {} \;

  19. #19
    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
    Par défaut
    Citation Envoyé par blancheln Voir le message
    j'ai très envie de n'utiliser que
    zipgrep 'DA="2012-10-17".*SL="FRCOC"' {} \;
    En pariant sur le fait qu'il y a statistiquement de bonnes chances pour que chaque fichier comporte au moins une ligne suffisamment courte pour être trouvée (comme celle de CONCARNEAU)?

    S'il n'est pas très grave de louper quelques fichiers, pourquoi pas...

    z'ont qu'à avoir des noms plus courts, LES VIVIERS QUIBERONNAIS, na!
    Tant pis pour eux!

    Et puis, ça te permet de te débarrasser du problème... ce qui n'est pas négligeable

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Bon bon bon,
    je sais pas trop, je fait tout ça pour éviter une mise en base super lourde puis traitement sql, ou une attaque des fichiers avec du php. Ca je sais faire.
    Je voulais profiter de la puissance d'un shell.

    S'il n'est pas très grave de louper quelques fichiers, pourquoi pas...
    C'est carrément pas possible. Je suis sur un poste dans la diretion des pêches au ministère et les pêcheurs, ben c'est pas des commode .

Discussions similaires

  1. [grep] Motif contenu dans d'autres mots
    Par malik0 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 04/03/2013, 15h35
  2. grep ne contenant pas un motif
    Par danathane dans le forum Linux
    Réponses: 3
    Dernier message: 24/01/2011, 17h35
  3. Trouver la ligne du dernier motif d'un grep
    Par Erlen dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 08/12/2010, 22h11
  4. [grep fichier word]recuperer lignes tableau motif
    Par fantomas261 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/09/2007, 13h09
  5. [VB6] [Graphisme] Floodfill et motif
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/12/2002, 09h35

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