Bash test [[ expression regulière
Résolu/Fermé
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
-
3 juil. 2009 à 14:52
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 13 déc. 2011 à 14:14
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 13 déc. 2011 à 14:14
A voir également:
- Bash test [[ expression regulière
- Test performance pc - Guide
- Test composant pc - Guide
- Redmi note 13 5g test - Accueil - Téléphones
- Test performance pc gratuit - Accueil - Utilitaires
- Test hdd - Télécharger - Informations & Diagnostic
6 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 juil. 2009 à 15:05
3 juil. 2009 à 15:05
Salut,
Essaie comme ça :
Essaie comme ça :
echo "$fich_name_check" | grep -q '\.gz\.' if [ "$?" = "0" ] then echo "oui le nom de fichier contient bien .gz." else echo "non il ne le contient pas" fi;-))
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
9 déc. 2011 à 17:16
9 déc. 2011 à 17:16
je rebondis sur ce vieux post car je pensais faire un peu la même chose avec une liste de fichier exclus sous la forme :
avec par exemple
IGNORE_FILES_ALERTE="access component toto.log"
et donc dans une boucle la valeur de ${fich} qui tourne sur les fichiers du répertoire :
et ça ne fonctionne pas ....
Stéphane
egrep -q -e "${IGNORE_FILES_ALERTE}" <<<${fich##*/}
avec par exemple
IGNORE_FILES_ALERTE="access component toto.log"
et donc dans une boucle la valeur de ${fich} qui tourne sur les fichiers du répertoire :
for fich in 'ls -1 ${LOGS_PATH}/*.log 2>/dev/null' do egrep -q -e "${IGNORE_FILES_ALERTE}" <<<${fich##*/} retval=$? if [[ ${retval} = 0 ]] then echo "je ne traite pas ce fichier basename ${fich}, il fait parti des exceptions aux alertes" else echo "envoi d'une alerte pour ${fich}" fi done
et ça ne fonctionne pas ....
Stéphane
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
9 déc. 2011 à 17:27
9 déc. 2011 à 17:27
Salut,
;-))
for fich in ${LOGS_PATH}/*.log ; do ...
;-))
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
9 déc. 2011 à 17:36
9 déc. 2011 à 17:36
merci mais c'est pas ça qui marchait pas, quoi que je préfère ta méthode, c'est le egrep qui marche pas ...
je ne parvient pas à chercher le nom de fichier parmis une liste de nom de fichiers ....
Stéphane
je ne parvient pas à chercher le nom de fichier parmis une liste de nom de fichiers ....
Stéphane
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
9 déc. 2011 à 17:42
9 déc. 2011 à 17:42
merci mais c'est pas ça qui marchait pas,
Ben si, si tu avais des espaces dans tes noms de fichiers ça ne risquait pas de marcher ;-\
je ne parvient pas à chercher le nom de fichier parmis une liste de nom de fichiers ....
C'est quoi ta liste ? ${IGNORE_FILES_ALERTE} ?
Ben si, si tu avais des espaces dans tes noms de fichiers ça ne risquait pas de marcher ;-\
je ne parvient pas à chercher le nom de fichier parmis une liste de nom de fichiers ....
C'est quoi ta liste ? ${IGNORE_FILES_ALERTE} ?
Utilisateur anonyme
9 déc. 2011 à 17:41
9 déc. 2011 à 17:41
en ce qui concerne le problème original, une regex n'est pas indispensable (grep non plus)
ICI, que peut valoir ${fic##*/} est exactement 'access component toto.log', ou autrechose
if [[ $fich_name_check == *.gz ]]; thenetc
ICI, que peut valoir ${fic##*/} est exactement 'access component toto.log', ou autrechose
if [ "${fic##*/}" = "$IGNORE_FILES_ALERTE" ]si il y a besoin de plus, précise le.
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
9 déc. 2011 à 17:44
9 déc. 2011 à 17:44
effectivement il semble que je me sois expliqué comme une chèvre (pov bête) ...
Le but : avoir une liste de nom de fichier à exclure :
IGNORE_FILES_ALERTE="access component toto.log"
donc je ne dois pas traiter le fichier s'il s'appel access ou component ou toto.log
je boucle donc sur mon rep (oui je sais dans le code je sélectionne déjà que les .log ...) et si le nom de fichier est présent dans la liste ben je passe au suivant ...
Stéphane
Le but : avoir une liste de nom de fichier à exclure :
IGNORE_FILES_ALERTE="access component toto.log"
donc je ne dois pas traiter le fichier s'il s'appel access ou component ou toto.log
je boucle donc sur mon rep (oui je sais dans le code je sélectionne déjà que les .log ...) et si le nom de fichier est présent dans la liste ben je passe au suivant ...
Stéphane
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
9 déc. 2011 à 17:52
9 déc. 2011 à 17:52
Alors fait le contraire :
;-))
egrep -q -e "${fich##*/}" <<<${IGNORE_FILES_ALERTE}
;-))
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
9 déc. 2011 à 18:08
9 déc. 2011 à 18:08
effectivement, ça tourne ...
et si je voulais corser un peu la chose ? (je viens de tilter) :
et excluse les fichiers qui contiennent le mot donc par exemple ne pas traiter :
access_nom_site.log
? possible ?
Stéphane
et si je voulais corser un peu la chose ? (je viens de tilter) :
et excluse les fichiers qui contiennent le mot donc par exemple ne pas traiter :
access_nom_site.log
? possible ?
Stéphane
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 9/12/2011 à 17:56
Modifié par qqchquicommenceparQ le 9/12/2011 à 17:56
IGNORE_FILES_ALERTE="access component toto.log" for f in ./*; do if [[ ! ${f##*/} =~ ${IGNORE_FILES_ALERTE// /|} ]]; then echo $f; fi doneça devrait marcher sous réserve de ne pas utiliser sh, mais bash, ou ksh
en bash
shopt -s extglob for f in ./*; do if [[ ! ${f##*/} == +(${IGNORE_FILES_ALERTE// /|}) ]]; then echo $f; fi done
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
9 déc. 2011 à 18:10
9 déc. 2011 à 18:10
c'est moi qui définis la liste donc je peux directement la séparer par | au lieu d'espace ....
mais ta solution peut-elle être modifiée pour prendre en compte soit le nom complet du fichier soit 1 mot présent dans le nom de fichier ? (ex: access présent dans access_log_monsite.log)
Stéphane
mais ta solution peut-elle être modifiée pour prendre en compte soit le nom complet du fichier soit 1 mot présent dans le nom de fichier ? (ex: access présent dans access_log_monsite.log)
Stéphane
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
Modifié par sbouli le 13/12/2011 à 09:59
Modifié par sbouli le 13/12/2011 à 09:59
Bonjour,
Je me permet de relancer le sujet, la version :
fonctionne parfaitement, mais depuis j'ai découvert qu'il fallait que je détecte aussi des portions de nom de fichier.
Par exemple si la liste IGNORE_FILES_ALERTE vaut = access toto.log titi.php
il faut que je détecte les fichiers nommés : access_nom_bidon_de_site aussi comme contenant le mot clef access ...
et franchement là je vois pas ....
Merci pour votre aide.
PS : je ne sais pas si la question à déjà été abordé mais il va bien JIPICY ? (ou il a changé de pseudo ?)
Je me permet de relancer le sujet, la version :
egrep -q -e "${fich##*/}" <<<${IGNORE_FILES_ALERTE}
fonctionne parfaitement, mais depuis j'ai découvert qu'il fallait que je détecte aussi des portions de nom de fichier.
Par exemple si la liste IGNORE_FILES_ALERTE vaut = access toto.log titi.php
il faut que je détecte les fichiers nommés : access_nom_bidon_de_site aussi comme contenant le mot clef access ...
et franchement là je vois pas ....
Merci pour votre aide.
PS : je ne sais pas si la question à déjà été abordé mais il va bien JIPICY ? (ou il a changé de pseudo ?)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
13 déc. 2011 à 10:31
13 déc. 2011 à 10:31
Re-
Il faut à nouveau changer la façon de "greper" ;-\
Il faut à nouveau changer la façon de "greper" ;-\
for fic in ${LOGS_PATH}/*.log do if test $(egrep "${IGNORE_FILES_ALERTE// /|}" <<<${fic}) then echo OK ${fic} fi done
sbouli
Messages postés
200
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
14 août 2014
2
13 déc. 2011 à 14:14
13 déc. 2011 à 14:14
nickel merci !
12 août 2009 à 15:58
12 août 2009 à 17:40