#1 Le 28/11/2014, à 12:25
- Link_Octree
[Bash] Vérifier qu'un fichier ne contient pas un mot-clés
Hello,
J'ai un fichier.txt qui est censé contenir un mot-clés. Il arrive parfois que ce mot-clés soit introuvable (quand le fichier a mal été téléchargé) je voudrais alors re-télécharger ce même fichier jusqu'à ce que le mot clés soit bel est bien présent dans le fichier.txt.
J'ai essayé BEAUCOUP de lignes de codes censées faire ceci, sans succés, je pense faire une erreur de syntaxe mais après une heure d'essais, je désespère :S
Voilà mon code actuel:
while [ grep -v -q "MotCle" prefixe_${nom_fichier}.html ]
do
wget ...
done
Si une erreur vous saute au yeux, merci de m'en faire part.
Dernière modification par Link_Octree (Le 28/11/2014, à 12:28)
Hors ligne
#2 Le 28/11/2014, à 12:35
- Sciensous
Re : [Bash] Vérifier qu'un fichier ne contient pas un mot-clés
il faut enlever les crochets du test []
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
Hors ligne
#3 Le 29/11/2014, à 07:00
- sputnick
Re : [Bash] Vérifier qu'un fichier ne contient pas un mot-clés
until grep -q "\bMotCle\b" "prefixe_${nom_fichier}.html"; do
wget ...
done
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#4 Le 02/12/2014, à 09:46
- Link_Octree
Re : [Bash] Vérifier qu'un fichier ne contient pas un mot-clés
Merci pour votre aide Sciensous & sputnick
Je voudrais ajouter une sécurité pour sortir de la boucle et abandonner si au bout de disons 5 tentatives le mot clé n'est toujours pas trouvé dans le fichier téléchargé.
J'ai une vague idée de comment interfacer çà avec mon code, mais encore une fois je bloque sur la syntaxe depuis plus de demi heure, j'ai essayé avec let, avec un exemple int, pas moyen d'arriver à quelque chose :S
let "compteur=0"
until grep -q "\bMotCle\b" "prefixe_${nom_fichier}.html" || compteur <=7
do
wget ...
let "var++"
done
Merci d'avance !
Dernière modification par Link_Octree (Le 02/12/2014, à 09:47)
Hors ligne
#5 Le 02/12/2014, à 14:39
- sputnick
Re : [Bash] Vérifier qu'un fichier ne contient pas un mot-clés
let ca fait un peu dépassé, on peut faire de l'arithmétique avec la forme
(( ))
count=0 # pas nécessaire, à toi de voir
until grep -q "\bMotCle\b" "prefixe_${nom_fichier}.html"; do
wget ...
((++count >= 5)) && break
done
Voir http://wiki.bash-hackers.org/syntax/arith_expr
Dernière modification par sputnick (Le 02/12/2014, à 14:40)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne