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 :

Retrouver des données sans grep


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Février 2020
    Messages : 1
    Par défaut Retrouver des données sans grep
    bonjour a tous
    voila ma question j'ai un fichier test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8 = INTEGER: 1
    9 = INTEGER: 2
    10 = INTEGER: 2
    18 = INTEGER: 2
    19 = INTEGER: 2
    20 = INTEGER: 2
    28 = INTEGER: 1
    j'ai dans un script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compare ="grep "$num""test"
    ce que j'aimerais faire
    -a partir de la variable $num qui peut prendre la valeur 8 par exemple,pouvoir récupérer uniquement "8 = INTEGER: 1" dans le fichier test et non pas en utilisant grep dans compare qui me fourni : 8 = INTEGER: 1;18 = INTEGER: 2;28 = INTEGER: 1

    existe t-il un moyen de faire ?
    Merci pour votre aide

    Cdt

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    construis ta regex correctement, et grep fera ce que tu veux.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    La différence entre les lignes
    8 = INTEGER: 1
    et
    18 = INTEGER: 2
    c'est que dans la première, le 8 est en début de ligne.
    Cherche à savoir comment on indique le début de ligne dans une expression régulière, et tu auras résolu ton problème (urgent ).

  4. #4
    Expert confirmé

    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
    Par défaut
    Salut,
    Citation Envoyé par balkany Voir le message
    Cherche à savoir comment on indique le début de ligne dans une expression régulière, et tu auras résolu ton problème (urgent ).
    Sauf si il y a une ligne du style 80 = INTEGER: 2 (ou 81, 82, 883, etc.)

    Donc plutôt chercher du côté des extrémités de mot ou de chaînes vides en début et fin de mot

  5. #5
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348

  6. #6
    Expert confirmé

    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
    Par défaut
    Bien vu

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    C'est vrai que grep est lourd ( ) si le fichier test (pas terrible de porter comme nom, le nom d'une commande) respecte vraiment le format fourni, car on pourrait passer par un : -vnum="$num" '$1 == num' test avec la bonne commande (qui est un faucon sans hache )

  8. #8
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Citation Envoyé par john black Voir le message
    j'ai dans un script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compare ="grep "$num""test"
    Quel est ton interpréteur de commandes ? Bash ? Csh ? Cela m'étonnerait que ce code donne quoique ce soit de ce que tu dis.


  9. #9
    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 Flodelarab Voir le message
    Il me semble que cette forme peut poser des problèmes, non pas ici, mais dans une version étendue du problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x='a b'
    echo "$x" > test
    grep '^'$x' =' test
    grep: b =: No such file or directory
    Du coup, pour éviter de me poser des questions, j'aurais tendance à systématiquement protéger l'appel de variable par des guillemets (sauf si je sais pourquoi je ne le fais pas!):
    voire, éventuellement:
    J'aime bien la dernière forme car elle fait très clairement apparaître le nom de la variable (ça me facilite la lecture rapide) et ça permet (de nouveau sans me poser de question) de ne pas tomber dans le piège classique où ce nom n'est pas suivi d'un caractère séparateur (comme l'espace).

  10. #10
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Il me semble que cette forme peut poser des problèmes, non pas ici, mais dans une version étendue du problème:
    Nous n'allons pas recommencer cette discussion dans tous les fils de discussion. J'ai considéré que la variable $num était déclarée comme entier (vu son nom) et donc x='a b' est irrecevable. C'est la raison pour laquelle je n'ai même pas protégé $num par des double quotes.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    '^'$num' ='
    t'es payé au caractère ?

    directement "^$num=".

    pigiste !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Crypter transit des données sans toucher au code source
    Par thecrafty dans le forum Protocoles
    Réponses: 2
    Dernier message: 08/06/2007, 17h31
  2. [TinyXML] Récupérer des données sans nom
    Par Bakura dans le forum XML
    Réponses: 4
    Dernier message: 30/03/2007, 18h59
  3. Mise a jour des données sans se deconnecter
    Par djedie dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/10/2006, 12h57
  4. Réponses: 6
    Dernier message: 01/08/2006, 18h45
  5. Envoyer des données sans socket
    Par siaoly dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 30/05/2006, 12h04

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