Tester présence variable dans fichier en shel

Résolu
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. Modérateur
    [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
    1. 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
      1. Modérateur
        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
        1. 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
          1. Modérateur
            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
            1. 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
              1. Salut,

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

                merci
                0
                1. Modérateur
                  Salut,

                  Qu'entends-tu par "variable" ? Un mot dans un fichier ?
                  grep -q "mot_à_chercher" fichier
                  if [ "$?" = "0" ]
                  then exécuter
                  else ...
                  fi
                  0