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 POSIX Discussion :

tester la présence d'une chaine dans un fichier


Sujet :

Shell et commandes POSIX

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut tester la présence d'une chaine dans un fichier
    Bonjour à tous,

    Dans une boucle j'ai besoin de tester la présence d'une chaine de caractère dans un fichier ASCII. Si elle est présente je déplace le fichier dans un répertoire existant sinon dans un autre.
    Après maintes tentatives l'AIX me renvoie ce message erreur "test.sh[1342]: TOTO_: unknown test operator"

    Mon test je recherche TOTO_ dans FIC.TXT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if [ grep TOTO_ ${Workingdirectorie}/${Rep}/FIC.TXT ]; then 
       mv ${Workingdirectorie}/${Rep}/FIC.TXT ${Workingdirectorie}/${Rep}/OK_TOTO/FIC.TXT
    else   
       mv ${Workingdirectorie}/${Rep}/FIC.TXT ${Workingdirectorie}/${Rep}/KO_TOTO/FIC.TXT
    fi
    Merci à vous car je débute en shell et je trouve tout et rien sur le net. Je développais en COBOL & CICS alors vous comprenez je suis un peu largué....

    A++

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    D'abord, les crochets n'ont rien à faire là.
    Ensuite, tu préféreras sans doute "grep -q" pour ne pas avoir les lignes qui correspondent écrites sur la sortie.
    Enfin, si le message d'erreur parle de TOTO_ c'est la faute des crochets. Il sont un raccourcis pour la commande test. Il s'attend donc à trouver un opérateur de comparaison et pas ce TOTO_.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if grep -q TOTO_ ${Workingdirectorie}/${Rep}/FIC.TXT
    then
    grep va rechercher ta regex dans le fichier TXT et renvoyer 0 au "if" s'il trouve et 1 s'il ne trouve pas.
    "if" prendra la première alternative si on lui donne 0 et la seconde (else) si on ne lui renvoie pas 0.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci
    J'en profite de tes connaissances.

    Si en plus de cette première recherche je souhaite en ajouter une deuxième.

    La jonction "OR" qui s'écrit -o donnerait quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if grep -q TOTO_ ${Workingdirectorie}/${Rep}/FIC.TXT -o grep -q TITI_; then
    mv ${Workingdirectorie}/${Rep}/FIC.TXT ${Workingdirectorie}/${Rep}/OK_TOTOTITI/FIC.TXT
    else
    mv ${Workingdirectorie}/${Rep}/FIC.TXT ${Workingdirectorie}/${Rep}/KO_TOTOTITI/FIC.TXT
    fi
    Je test..
    Merci d'avance.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Je mettrais les motifs TOTO_ et TITI_ dans un fichier "motifs.txt", puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if grep -q -f motifs.txt ${Workingdirectorie}/${Rep}/FIC.TXT
    then
    Si tu ne veux pas créer de fichier, tu peux utiliser un here-document. Renseigne-toi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if grep -q -f - ${Workingdirectorie}/${Rep}/FIC.TXT <<EOF
    TOTO_                                                                                                                                                                                                                                                                            
    TITI_
    EOF
      then echo OK;else echo KO;fi
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Besoin d'aide pour la programation d'un mastermind !
    Par Owymir dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 24/03/2015, 20h12
  2. Besoin d'aide pour la programation VB
    Par boubou2007 dans le forum Windows
    Réponses: 3
    Dernier message: 29/01/2011, 09h56
  3. Besoin d'aide en Programation shell
    Par RonnCmoi dans le forum Linux
    Réponses: 3
    Dernier message: 02/10/2008, 15h45
  4. SOS mon partiel s'approche jé besoin d'aide je suis nulle en shell
    Par Fatima-Ezzahra dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 05/06/2007, 13h33
  5. Besoin d'aide pour un script shell
    Par lecharcutierdelinux dans le forum Linux
    Réponses: 5
    Dernier message: 20/05/2006, 10h36

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