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 :

KSH: Recherche mot dans ligne précise d'un fichier


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut KSH: Recherche mot dans ligne précise d'un fichier
    Bonjour à tous,

    J'aimerai savoir s'il est possible de chercher un mot dans une ligne précise (récupérer dans une variable) dans un document via la commande grep.
    Je m'explique:
    j'ai 2 fichiers A.toto et B.log

    A.toto: contenant plusieurs chaines de caracteres sur plusieurs ligne
    exemple:
    ceci est V
    cela est I
    cela est U
    ...

    B.log: contenant une chaine de caracteres sur plusieurs lignes
    exemple:
    V
    I
    E

    Est-il possible de gaire une recherche pour recherche d'une ligne de B recupérer la ligne de A
    j'aimerais recupérer via un simple echo la ligne de B et de A correspondantes:
    exemple: V présent dans ceci est un V

    Voici ce que j'ai pondu mais bon ca ne veut pas marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    recherche()
    {
    cat A.toto | while read ligne
    do
    cat B.log | while read line
    do
    echo "line $line "
    cat A.toto | grep -i  "$line" # pbleme recherche dans tout le fichier 
    if [[ $? == 0 ]] then
    echo "$line présent dans $line" >> C.log
    fi
    done
    }
    merci pour votre aide chers développeurs!

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Soyez simple
    vous pouvez vous inspirer de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for i in `cat B.log`
    do
        echo " =================================== "
        echo $i
        grep $i A.toto
    done

  3. #3
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Génial argoet!
    Malheureusement, il se peut que dans mon A.log se trouve plusieurs lignes identiques.
    J'ai un peu (très peu) modifié ton code comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for i in `cat B.log`
    do
    grep -wi -c "$i"  A.log
     
    if [[ $? == 0 ]] then
     echo " $i, `grep -wi $i A.log` " >> c.log
    fi
    done
    enc lair mon c.log retourne :
    v, ceci est un v
    i, ceci est un i
    ceci est un i
    ceci est un i

    e, ceci est un e.

    Du coup aurais-tu une petite astuce.
    Merci pour tonc oup de main Capitaine!

  4. #4
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Vous pouvez extraire que la premiere ligne du grep avec la commande "head"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo " $i, `grep -wi $i A.log | head -1` " >> c.log

  5. #5
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Merci Beaucoup argoet.

    J'ai finalement opté pour une autre solution, histoire de garder toutes les lignes, la voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for i in `cat B.log`
    do
    grep -wi -c "$i"  A.log
     
    if [[ $? == 0 ]] then
    echo "`grep -wi $i A.log` " > c_temp.log
     cat c_temp.log | while read ligne
     	do
     	echo "$i ¨ $ligne"> C.log
     	done
     	fi
    done
    ceci fonctionne comme je le voulais,

    je te remercie énormément Argoet!

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

Discussions similaires

  1. Recherche mot dans document Word
    Par dakota77 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/11/2009, 20h35
  2. Réponses: 1
    Dernier message: 20/09/2007, 15h15
  3. Recherche mot dans une URL
    Par nidecker dans le forum Linux
    Réponses: 3
    Dernier message: 11/09/2007, 18h20
  4. [C#] Rechercher Mot dans WebBrowser
    Par davasm dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/11/2006, 14h35
  5. Rechercher mot dans PDF
    Par xev74 dans le forum ASP
    Réponses: 7
    Dernier message: 20/10/2006, 16h22

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