Tester présence variable dans fichier en shel

Résolu
cobra85 Messages postés 148 Statut Membre -  
cobra85 Messages postés 148 Statut Membre -
Bonjour,

Je cherche à tester la présence d'une variable qui ce trouve à l'intérieur d'un fichier. Si cette cette variable existe: continuer l'exécution du script sinon sortir.

Le script qui analyse le fichier est en shell.

j'ai pensé a faire:

if(P330)
{
script à éxécuter
}
else
{
}

merci
Configuration: Systeme: Windows XP Home SP3, 80 DDR, 1Go RAM

Antivirus: Avast

Pare-feu: fournit par Windows

Autres: CCleaner, Spybot

9 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Qu'entends-tu par "variable" ? Un mot dans un fichier ?
    grep -q "mot_à_chercher" fichier
    if [ "$?" = "0" ]
    then exécuter
    else ...
    fi
    0
  2. cobra85 Messages postés 148 Statut Membre 3
     
    Salut,

    oui, par variable je voulais dire un mot dans un fichier.

    merci
    0
  3. cobra85 Messages postés 148 Statut Membre 3
     
    Salut,

    J'ai testé ya commande mais rien je n'arrive pas à la faire fonctionner:

    #$ nl adress_coordonnee1.awk
    {
    
    for fich in *.txt; do
    
    grep -q "mot_à_chercher" fichier
    if [ "$?" = "0" ]
    then
    
    sed "s/address /'/g" adress2_${fich%.*}.txt > adress1_${fich%.*}.txt
    sed "s/rue/'/g" adress1_${fich%.*}1.txt > adress2_${fich%.*}.txt
    
    #permet de vider la table avant de la remplir
    echo 'echo "truncate table "adresse_'${fich%.*}'" ;" | mysql fournisseur ' > ADRESSE_FINAL_${fich%.*}.sql
    
    
    #affiche "insert into ..." dans un fichier nommé adress_text.csv
    echo 'echo "insert into adresse_'${fich%.*}' (adresse, rue) values '> adress_text.csv
    
    #permet d'inserer les données de adress1_coordonnee1.txt dans adress_text.csv tout en gardant en mémoire les valeurs déja inscrites dans ce fichier.
    cat adress1_${fich%.*}.txt >> adress_text.csv
    
    #permet de supprimer les retours chariots du fichier adress_text.txt puis de tout mettre dans un fichier adress1_text.csv
    tr -d '\r\n' < adress_text.csv > adress1_text.csv
    
    
    sed 's/)(/), (/g' adress1_text.csv > adress2_text.csv
    sed 's/)*$/);" | mysql founisseur/g' adress2_text.csv > adress3_text.csv
    
    
    echo -e '\n' >> adress3_text.csv
    cat adress3_text.csv >> ADRESSE_FINAL_${fich%.*}.sql
    
    
    #permet de supprimer définitivement les fichiers intermédiaires générés après l'éxécution du script sans les mettre dans la poubelle. Il ne restera que ADRESSE_FINAL.sql
    rm adress3_${fich%.*}.txt
    rm adress2_${fich%.*}.txt
    rm adress1_${fich%.*}.txt
    rm adress_text.csv
    rm adress1_text.csv
    rm adress2_text.csv
    rm adress3_text.csv
    
    else
    
    fi
    
    done
    }
    
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Alors... dans :
    grep -q "mot_à_chercher" fichier
    il faut remplacer "mot_à_chercher" par le mot dont tu veux tester la présence et "fichier" par "$fich". Sans quoi forcément ça marche pas ;-((
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cobra85 Messages postés 148 Statut Membre 3
     
    Salut,

    j'ai fait comme indiqué, mais le fichier ne se lance pas. En faite, il n'aime pas la condition ifet les arguments qui lui sont propre
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Affiche ton script revu et corrigé.

    Affiche un extrait d'un fichier contenant le mot_clé recherché et un extrait d'un fichier ne contenant pas le mot_clé recherché.

    Merci.
    0
  8. cobra85 Messages postés 148 Statut Membre 3
     
    Voici un extrait contenant le mot clé: P330

    !#CODE P330
    !#
    Nom: M. Dumont
    address 33 
    rue Av du Gnl De Gaulle
    
    Nom: Mme 
    address 167 
    rue Place Alésia
    Ville Paris
    
    Nom: M. Dumont
    address 10 
    rue impasse du bois


    et voici le même fichier sans le mot clé

    !#
    address 33 
    rue Av du Gnl De Gaulle
    
    address 167 
    rue Place Alésia
    
    address 10 
    rue impasse du bois
    
    0
  9. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [tmpfs]$ cat plop
    !#CODE P330
    !#
    Nom: M. Dumont
    address 33
    rue Av du Gnl De Gaulle
    
    Nom: Mme
    address 167
    rue Place Alésia
    Ville Paris
    
    Nom: M. Dumont
    address 10
    rue impasse du bois
    
    
    [tmpfs]$ cat plop2
    !#
    address 33
    rue Av du Gnl De Gaulle
    
    Nom: Mme
    address 167
    rue Place Alésia
    Ville Paris
    
    Nom: M. Dumont
    address 10
    rue impasse du bois
    
    
    [tmpfs]$ cat foo.sh
    #! /bin/sh
    
    #set -xv
    
    for fich in plop*; do
    
    grep -q "P330" ${fich}
    if [ "$?" = "0" ]
    then
    echo "Le fichier ${fich} contient bien le mot clé."
    else
    echo "Le fichier ${fich} ne contient pas le mot clé."
    fi
    done
    
    
    [tmpfs]$ ./foo.sh
    Le fichier plop contient bien le mot clé.
    Le fichier plop2 ne contient pas le mot clé.
    
    [tmpfs]$
    ;-))
    0
  10. cobra85 Messages postés 148 Statut Membre 3
     
    OK, merci beaucoup
    0