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 :

script débutant


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Par défaut script débutant
    Bonjour,

    je souhaite rechercher une chaine de caractere dans un fichier. ( j'utilise grep mais je n'ai pas tout ce que je souhaite ... ).

    J'aimerai récupérer le numéro de ligne ainsi que le numéro de la colonne pour savoir où se situe exactement la chaine recherché dans le fichier, le numéro de ligne est assez aisé avec "grep -n" mais pour récupéré le numéro de la colonne je ne vois pas comment faire.

    Si vous avez une idée, merci d'avance de ma la communiquer.

    A bientot.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Par défaut
    J'ai un fichier test.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            options/extend_source
            subroutine AFFICHAGE(CARTE,DEFINITION_CARTE)
            implicit none
    	EXIT
            	EXIT
    J'ai essayé ca :
    ici $keyword vaut EXIT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    grep -n $keyword test.txt |
    while
    	read line
    do
    	num_ligne=ligne:$(echo $line | cut -d : -f 1)
    	num_col=colonne:$(echo `expr index "$line" $keyword`)
    	echo $num_ligne,$num_col
    done
    j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne:4,colonne:4
    ligne:5,colonne:5
    alors qu'il devrait afficher :
    ligne:4,colonne:8
    ligne:5,colonne:16

    une tabulation est égale a 8 espaces je ne vois pas comment faire pour bien compter.

    Merci d'avance

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par HeZiX
    J'ai un fichier test.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            options/extend_source
            subroutine AFFICHAGE(CARTE,DEFINITION_CARTE)
            implicit none
    	EXIT
            	EXIT
    J'ai essayé ca :
    ici $keyword vaut EXIT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    grep -n $keyword test.txt |
    while
    	read line
    do
    	num_ligne=ligne:$(echo $line | cut -d : -f 1)
    	num_col=colonne:$(echo `expr index "$line" $keyword`)
    	echo $num_ligne,$num_col
    done
    j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne:4,colonne:4
    ligne:5,colonne:5
    alors qu'il devrait afficher :
    ligne:4,colonne:8
    ligne:5,colonne:16

    une tabulation est égale a 8 espaces je ne vois pas comment faire pour bien compter.

    Merci d'avance
    le "truc" bête et méchant dans ce genre de situation est tout simplement d'ajouter un "filtre" entre le fichier texte original et la fonction grep :
    filtre dont la fonction sera de remplacer toutes les tabulations par N espaces…

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Par défaut
    merci j'ai réussi avec un petit sed placé avant le grep :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sed -e 's/	/        /g' $2 | grep -n $keyword |
    while
    	read line
    do
    	num_ligne=ligne:$(echo $line | cut -d : -f 1)
    	colonne=`expr index "$line" $keyword`
    	num_col=colonne:$(echo `expr  $colonne - 3`)
    	echo $num_ligne,$num_col
    done

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

Discussions similaires

  1. Besoin d'aide script débutant
    Par hackmed dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 11/05/2015, 17h01
  2. Script débutant remonté d'info dans un fichier csv
    Par Touny dans le forum VBScript
    Réponses: 0
    Dernier message: 16/06/2011, 15h14
  3. Conversion de script (débutant)
    Par petitbreton dans le forum C++
    Réponses: 1
    Dernier message: 24/09/2008, 00h21
  4. [Débutant] Problème de Script
    Par FREMY dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2005, 14h00
  5. Réponses: 2
    Dernier message: 15/08/2005, 20h54

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