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 :

[SHELL] recherche d'une chaine


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut [SHELL] recherche d'une chaine
    Bonjour je dois chercher toutes les URLs dans tous les fichiers de tous les sous répertoires d'un répertoire....comme ça n'est pas très clair et qu'un exemple vaut mieux qu'un grand discours j'ai un répertoire DossierPere et je veux chercher toutes les URL qui sont dans tous les fichiers de ce répertoire et de tous ses sous-répertoires....
    pour le moment j'ai ceci qui me retourne les lignes complètes où il y a une URL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #pour i parcourant tous les fichiers 
    for REP in `find * -type d` ; do
    	for FICH in $REP/* ; do
    		if [ -f $FICH ] ; then
    			 egrep '(http)' $FICH
    		fi
    	#fin pour fichiers
    	done
    #fin pour répertoires
    done
    or moi je ne voudrais QUE les URL....sauriez-vous comment faire svp?.
    (je ne veux que des URL avec le protocole HTTP)
    merci d'avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par magicbisous-nours Voir le message
    Bonjour je dois chercher toutes les URLs dans tous les fichiers de tous les sous répertoires d'un répertoire....comme ça n'est pas très clair et qu'un exemple vaut mieux qu'un grand discours j'ai un répertoire DossierPere et je veux chercher toutes les URL qui sont dans tous les fichiers de ce répertoire et de tous ses sous-répertoires....
    pour le moment j'ai ceci qui me retourne les lignes complètes où il y a une URL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #pour i parcourant tous les fichiers 
    for REP in `find * -type d` ; do
    	for FICH in $REP/* ; do
    		if [ -f $FICH ] ; then
    			 egrep '(http)' $FICH
    		fi
    	#fin pour fichiers
    	done
    #fin pour répertoires
    done
    or moi je ne voudrais QUE les URL....sauriez-vous comment faire svp?.
    Ben oui =>il te suffit de faire un grep "http" et de regarder s'il t'a renvoyé quelque chose => si c'est le cas c'est que tu avais une URL donc il te suffit de l'afficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #pour i parcourant tous les fichiers 
    for REP in `find * -type d` ; do
    	for FICH in $REP/* ; do
    		if [ -f $FICH ] ; then
    			 result=`egrep '(http)' $FICH`
                             test -n "$result" && echo "$result"
    		fi
    	#fin pour fichiers
    	done
    #fin pour répertoires
    done
    Maintenant c'est dommage de faire un test sur les fichiers alors que "find" peut te les trouver plus rapidement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #pour i parcourant tous les fichiers 
    find * -type f -print |while read FICH ; do
    	result=`egrep '(http)' $FICH`
    	test -n "$result" && echo "$result"
    #fin pour fichiers....
    done
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    ça me retourne exactement le même résultat : toutes les lignes qui contiennent une URL.....mais les lignes complètes alors que je ne voudrais que les URLs......je cherche depuis hier sans succès...
    en tout cas merci de ta réponse....

  4. #4
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    C'est l'option -o de egrep. Il faut lui donner l'expression rationnelle correspondant à l'URL.

  5. #5
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    voici mon code avec vos conseils :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #pour i parcourant tous les fichiers 
    find * -type f -print |while read FICH ; do
    	result=`egrep -o '^(http://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$' $FICH`
    	test -n "$result" && echo "$result"
    #fin pour fichiers....
    done
    et voici ce que me répond mon serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    egrep: illegal option -- o
    usage: egrep [-c|-l|-q] [-bhinsvx] -e pattern_list...
            [-f pattern_file...] [file...]
    et quand je fais un man egrep je ne vois pas l'option -o....
    apparamment cela vient du fait que je n'ai pas le GNU grep.....et je ne peux l'installer car c'est un gros serveur utilisé par beaucoup de monde dans la boîte et je suis stagiaire...

  6. #6
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Tu peux utiliser sed alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -nr 's/.*(regexp).*/\1/p'
    L'option -r est pour les regexp étendues ; c'est -E sur certains sed. Si tu n'as ni l'un ni l'autre, il suffit de mettre un backslash devant les parenthèses.

    Attention : si tu peux avoir plusieurs URL sur la même ligne, c'est beaucoup plus compliqué à gérer.

Discussions similaires

  1. [Tableaux] Recherche d'une chaine dans un tableau
    Par tom06440 dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2005, 23h27
  2. Client POP3 en C - Recherche dans une chaine
    Par titelily dans le forum C
    Réponses: 12
    Dernier message: 13/06/2005, 02h13
  3. [VB.NET] Recherche dans une chaine de caractères
    Par Pleymo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/04/2005, 10h25
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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