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

Linux Discussion :

recherche par bloc


Sujet :

Linux

  1. #1
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut recherche par bloc
    Bonjour,

    J'ai un répertoire dans lequel se trouve plusieurs sous repertoires et dans chacun de ces derniers se trouve plusieurs dossiers dont chacun contient un fichier d'extention ".dsc" .
    sur ces fichier j'aimerais effectuer la recherche par bloc i.e les blocs dont a premiere ligne commence par le mot "screenout" et les afficher,

    exemple de bloc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom",
            v3 (3) "voiture"
    }

  2. #2
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Ton bloc aura toujours le même nombre de lignes ou c'est aléatoire ?

    Il te faut le nom du fichier aussi ou que le bloc en sortie ?

  3. #3
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Merci pour ta reponse
    sinon le nombre de ligne des blocs et leurs contenenu sont aleatoires

    l'idée est que je cherche quelque chose de la sorte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "début de ligne " (eventuels espaces) scrennout"  n'importe quoi....." {"   afficher le contenu " }"

  4. #4
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Sûrement y-a-t'il plus simple, mais voilà un petit truc à base de "grep" et de "sed" :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    $ while read line; do echo "$line :"; sed -n '/screenout/{:z;N;/}$/!bz;p}' $line; echo; done < <(grep -r -l 'screenout' .)
    ./rep/bar :
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom",
            v3 (3) "voiture"
    }
     
    ./rep/rep1/brol :
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom"
    }
     
    ./rep/rep1/rep2/toto :
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom",
            v3 (3) "voiture"
    	v4 (4) "lalala"
    }
     
    ./toto :
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom",
            v3 (3) "voiture"
    	v4 (4) "lalala"
    }
     
    ./brol :
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom"
    }
     
    ./bar :
    screenout "Détails du screenout" : {
            v1 (1) "Moins de 18 ans",
            v2 (2) "Dom",
            v3 (3) "voiture"
    }
     
     
    $

  5. #5
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Si tu veux t'éviter la boucle (mais t'auras pas les noms des fichiers) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ A=$(grep -r -l 'screenout' .)
    $ sed -n '/screenout/{:z;N;/}$/!bz;p}' $A

  6. #6
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Merci pour tes reponses, c'est parfait

    voila je veux faire un fichier cbl.sh que je lance depuis le repertoire principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
    
    for i in `find -type f -name "*.dsc"`
    
    do
    
    A=$(grep -r -l 'screenout' .)
    $ sed -n '/screenout/{:z;N;/}$/!bz;p}' $A
    
    echo "$(basename $i '.dsc') #_non du fichier"
    
    echo "$A"
    
    done
    mais comment je fais pour la partie en italique?

    merci

  7. #7
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    while read line
    do 
    echo "${line##*/} :"
    sed -n '/screenout/{:z;N;/}$/!bz;p}' ${line}
    echo
    done < <(grep -r -l 'screenout' .)

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

Discussions similaires

  1. recherche par bloc
    Par arm3366 dans le forum Langage
    Réponses: 27
    Dernier message: 05/09/2011, 11h58
  2. recherche par mot clé
    Par seb59dk dans le forum Access
    Réponses: 3
    Dernier message: 06/09/2005, 14h26
  3. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 10h56
  4. Probleme de recherche par listbox
    Par haigwepa dans le forum IHM
    Réponses: 6
    Dernier message: 12/10/2004, 19h57
  5. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07

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