Tester présence variable dans fichier en shel

Résolu/Fermé
Signaler
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
-
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
-
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

9 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 890
Salut,

Qu'entends-tu par "variable" ? Un mot dans un fichier ?
grep -q "mot_à_chercher" fichier
if [ "$?" = "0" ]
then exécuter
else ...
fi
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
3
Salut,

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

merci
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
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
}
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 890
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 ;-((
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 890
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.
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 890
[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]$
;-))
Messages postés
132
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
15 novembre 2014
3
OK, merci beaucoup