Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/10/2009, à 13:51

oobuntu

egrep problème script bash

Je veux extraire une chaîne telle que '20##########' dans le fichier test.htm
Je lance donc

egrep -o 20[0-9]{10} test.htm

Dans un terminal, cela me ressort une liste d'une douzaine de nombre à douze chiffres (ce que je veux, OK)
La même commande dans un script bash et le script reste planté là !?

un ps -ef me donne

UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
(...)
frans    17987 17984  0   752   784   1 14:46 pts/4    00:00:00 egrep 20[0-9]{10}
(...)

Une idée ?

Hors ligne

#2 Le 15/10/2009, à 13:59

Coolgeek

Re : egrep problème script bash

as tu bien preciser le nom du fichier ?

Hors ligne

#3 Le 15/10/2009, à 14:04

oobuntu

Re : egrep problème script bash

Coolgeek a écrit :

as tu bien preciser le nom du fichier ?

Comme je le montre dans le code (c'est un "copié-collé")

Je précise que j'ai essayé avec les guillemets simples et doubles, sans l'option -o mais c'est pareil !

Dernière modification par oobuntu (Le 15/10/2009, à 14:08)

Hors ligne

#4 Le 15/10/2009, à 14:43

twocats

Re : egrep problème script bash

Que donne :

bash -x tonscript.sh

La réponse est 42

Hors ligne

#5 Le 15/10/2009, à 14:55

oobuntu

Re : egrep problème script bash

voilà :

(...)
+ egrep -o 20[0-9]{10} test.htm

et c'est tout, ça s'arrête là !

P.S. Je crois que je ne vais pas m'éterniser sur ce problème, je vais le contourner avec un grep sur une autre chaîne puis cut.. puis sed.. et je pourrai extraire ce que je veux.
Le but du script est de télécharger certaines images liées présentes dans une page html, le egrep -0 me sortait directement les URLs des images.

Quand on n'a pas de solution à un bug on le contourne. Le reste est de la curiosité ou de l'obstination.

Hors ligne

#6 Le 15/10/2009, à 15:42

Totor

Re : egrep problème script bash

Rajoute ceci en début de script (après le sheebang) et donne le résultat :

shopt
echo $-

sinon, si tu procèdes ainsi, ça donne quoi ? (normalement, ça ne change rien mais bon)

egrep -o '20[0-9]{10}' test.htm

ou

egrep -o 20[0-9]{10} < test.htm

-- Lucid Lynx --

Hors ligne

#7 Le 15/10/2009, à 16:11

oobuntu

Re : egrep problème script bash

Nan, je laisse tomber.
Merci.
Et pour ta peine, un petit script qui télécharge des images météo satellite temps réel ( toutes les 15') sur la France :
Il s'autoplanifie toutes les 3 heures (on peut mettre moins) mais comme il y a ~14 images disponibles chaque fois à 4 images par heure, cela fait 12 images pour 3 heures, ça évite de surcharger le serveur.
Le script peut être adapté. Les répertoires doivent exister (sont créés une fois pour toutes).

PROG=${0##*/}
pidof -x -o $$ $PROG && exit 1	# Sort si une autre instance est en cours
[ -z "$(atq -q s)" ] && at -q s now + 3 hours <<< $0	# Lance la planification si non planifié
DOSS="$HOME/Images/meteo/$PROG-fr"
LOGFILE="$HOME/Images/meteo/$PROG.log"
HTMFILE="/dev/shm/$PROG.htm"
SITE="http://www.sat24.com"
URL1="region.aspx?type=last"
wget -O $HTMFILE "$SITE/$URL1&country=fr" || exit 1
LISTE=$(grep "$URL1&time=" $HTMFILE | cut -d"'" -f2 | sed 's/region.aspx/image.ashx/')
for URL in $LISTE
do
	FILE=$DOSS/${URL:28:6}-${URL:34:4}.jpg
	[ -f $FILE ] || wget -O $FILE "$SITE/$URL" && convert $FILE $FILE
	ENTETE="$(date '+%a %e %b %Y %T') :"
	echo "$ENTETE ${FILE##*/} enregistré" >> $LOGFILE
done
exit 0

Hors ligne