#1 Le 28/11/2015, à 17:54
- sebastien29800
recherche de caractères dans un fichier texte
bonjour, voici un extrait du fichier utilisé :
<div id="coucher_ephemerides">
<img src="http://images.meteoconsult.fr/images/meteoconsult2014/decoupes/d_previsions/03_prevision_ville_J0_premium/picto-prevision-premium-coucher.png" />
<div style="padding-top:12px;">
<span style="font-family:'RobotoBold'; line-height:20px;">Coucher</span><br />
<span style="font-family:'RobotoRegular';">17:27</span>
</div>
comment rechercher dans ce fichier la ligne contenant >Coucher< et rentrer dans une variable ($heure) la valeur entre > et < (17H27) qui se trouve à la ligne du dessous ?
en bash s'il vous plait (sed, cut ....)
j'ai du mal !! ;-)
merci
Hors ligne
#2 Le 28/11/2015, à 18:10
- pingouinux
Re : recherche de caractères dans un fichier texte
Bonjour,
$ heure=$(sed -rn '\#>Coucher</span>#n;s#.*>([0-9:]+)</span.*#\1#p' fichier)
$ echo $heure
17:27
Ajouté: Ou bien
$ heure=$(sed -rn '\#>Coucher</span>#n;s#.*>([0-9]+):([0-9]+)</span.*#\1H\2#p' fichier)
$ echo $heure
17H27
Édité : Petite simplification
Dernière modification par pingouinux (Le 28/11/2015, à 18:15)
Hors ligne
#3 Le 28/11/2015, à 18:37
- sebastien29800
Re : recherche de caractères dans un fichier texte
merci beaucoup pingouinux
cependant en utilisant ce fichier, ça me donne des résultats en plus ! :-\
<div id="lever_ephemerides">
<img src="http://images.meteoconsult.fr/images/meteoconsult2014/decoupes/d_previsions/03_prevision_ville_J0_premium/picto-prevision-premium-lever.png" />
<div style="padding-top:15px;">
<span style="font-family:'RobotoBold'; line-height:20px;">Lever</span><br />
<span style="font-family:'RobotoRegular';">08:44</span>
</div>
</div>
<div style="float:left;">
<div style="width:100px; height:87px; position:relative;">
<img style="position:absolute; top: 65px; left:10px;" src="http://images.meteoconsult.fr/images/meteoconsult2014/decoupes/d_previsions/06_elements_lot2/Img-prevision-details-fleche.png" />
<span style="position:absolute; top:48px; left:22px; font-size:16px; font-family:'RobotoBold'; color:#aaa;">8h43m</span>
<span style="position:absolute; top:71px; left:31px; font-size:16px; font-family:'RobotoBold';">-2min</span>
</div>
</div>
<div id="coucher_ephemerides">
<img src="http://images.meteoconsult.fr/images/meteoconsult2014/decoupes/d_previsions/03_prevision_ville_J0_premium/picto-prevision-premium-coucher.png" />
<div style="padding-top:12px;">
<span style="font-family:'RobotoBold'; line-height:20px;">Coucher</span><br />
<span style="font-family:'RobotoRegular';">17:27</span>
</div>
</div>
heure=$(sed -rn '\#>Coucher</span>#n;s#.*>([0-9]+):([0-9]+)</span.*#\1H\2#p' essai2.txt)
echo $heure
08H44 17H27
Hors ligne
#4 Le 28/11/2015, à 19:00
- pingouinux
Re : recherche de caractères dans un fichier texte
Exact, j'avais trop simplifié l'expression, mais je n'avais pas l'exemple complet.
$ heure=$(sed -rn '\#>Coucher</span>#{n;s#.*>([0-9]+):([0-9]+)</span.*#\1H\2#p}' essai2.txt)
$ echo $heure
17H27
Hors ligne
#5 Le 28/11/2015, à 21:04
- sebastien29800
Re : recherche de caractères dans un fichier texte
parfait, excellent , merci beaucoup pingouinux , impressionné par tes connaissances. tu es toujours le premier à répondre dans ce genre de questions !!
maîtrise parfaite !!! ;-)
Hors ligne
#6 Le 29/11/2015, à 09:17
- credenhill
Re : recherche de caractères dans un fichier texte
hello
avec awk
$ h=$(awk -F "[<>]" '/Coucher/ {getline; print $3}' fichier); echo $h
17:27
Hors ligne
#7 Le 29/11/2015, à 09:24
- sebastien29800
Re : recherche de caractères dans un fichier texte
merci également credenhill
cela recherche "Coucher" ou ">Coucher<" ?
merci
Hors ligne
#8 Le 29/11/2015, à 09:45
- credenhill
Re : recherche de caractères dans un fichier texte
Coucher avec C majuscule
si il y a ambiguité, alors chercher />Coucher</
Dernière modification par credenhill (Le 29/11/2015, à 09:49)
Hors ligne
#9 Le 29/11/2015, à 10:09
- sebastien29800
Re : recherche de caractères dans un fichier texte
merci beaucoup !!!!
dans le même genre, recherche la ligne avec ">Saint< et mettre dans une variable $saintdujour le texte dans la même ligne se trouvant entre les derniers > < (Saturnin)
merci
<div id="saint_ephemerides">
<img src="http://images.meteoconsult.fr/images/meteoconsult2014/decoupes/d_previsions/03_prevision_ville_J0_premium/picto-prevision-premium-saint.png" />
<div style="padding-top:15px;">
<span style="font-family:'RobotoBold'; line-height:20px; text-transform:capitalize;">Saint</span><br /><span style="font-family:'RobotoRegular';">Saturnin</span>
</div>
Hors ligne
#10 Le 29/11/2015, à 10:38
- credenhill
Re : recherche de caractères dans un fichier texte
$ sdj=$(awk -F "[<>]" '/>Saint/ { print $(NF-2)}' fichier); echo $sdj
Saturnin
Hors ligne
#11 Le 29/11/2015, à 10:45
- sebastien29800
Re : recherche de caractères dans un fichier texte
merci credenhill, super
awk parait très puissant aussi.
quel commande est la plus simple à apprendre et la plus complète pour le traitement de texte dans ce genre ?
Hors ligne
#12 Le 29/11/2015, à 11:14
- credenhill
Re : recherche de caractères dans un fichier texte
sed et awk, sont les commandes les plus puissantes pour manipuler, rechercher et transrformer du texte
Hors ligne
#13 Le 29/11/2015, à 16:49
- sebastien29800
Re : recherche de caractères dans un fichier texte
rebonjour,
dans le texte suivant, j'essaie d'isoler dans une variable l'heure (13h25)
le code suivant, en m'aidant de vos exemples, fonctionne, mais je ne sais pas trop pourquoi (gros coup de bol) ;-\ pouvez vous m'expliquer ?
merci
bassemer=$(awk -F "[<>]" '/>BM/ { print $(NF-8)}' /tmp/sitemeteo.txt)
<div style="display: inline-block; font-size:14px; color:#3b3b3b; padding-left:20px; text-transform:uppercase; line-height:32px; font-family:'RobotoRegular';">
<span style="font-family:'RobotoBold';">BM</span> <span>0h59</span> <span style="padding-left:10px; text-transform:lowercase;">1.3m</span><br />
</div>
</div>
Hors ligne
#14 Le 29/11/2015, à 16:53
- sebastien29800
Re : recherche de caractères dans un fichier texte
en gros , pourquoi le (NF-8) fait fonctionner la commande alors qu'avant, c'était (NF-2) ?
merci
Hors ligne
#15 Le 29/11/2015, à 17:10
- pingouinux
Re : recherche de caractères dans un fichier texte
C'est parce que la ligne est découpée au niveau des < et >, à cause de
awk -F "[<>]" ...
NF est le nombre de champs (Ici 15), et celui qui t'intéresse est le 7ème (le 8ème avant le dernier).
Hors ligne
#16 Le 29/11/2015, à 17:58
- sebastien29800
Re : recherche de caractères dans un fichier texte
zh ok merci, on compte à partir de la fin de la ligne
merci
Hors ligne
#17 Le 29/11/2015, à 18:28
- pingouinux
Re : recherche de caractères dans un fichier texte
on compte à partir de la fin de la ligne
Ce n'est pas obligatoire. On peut faire ceci
bassemer=$(awk -F "[<>]" '/>BM/ { print $7}' /tmp/sitemeteo.txt)
Hors ligne
#18 Le 29/11/2015, à 18:34
- sebastien29800
Re : recherche de caractères dans un fichier texte
ok merci !!!!
Hors ligne
#19 Le 30/11/2015, à 17:39
- sebastien29800
Re : recherche de caractères dans un fichier texte
bonjour à tous,
je rencontre un petit soucis
si je fais :
wget -t 2 -T 5 "http://marine.meteoconsult.fr/meteo-marine/meteo-abords-du-port/ocean-atlantique/previsions-meteo-brest-218-0.php" -O /tmp/sitemeteo.txt
sdj=$(awk -F "[<>]" '/>Saint/ { print $(NF-2)}' /tmp/sitemeteo.txt)
echo $sdj
j'obtient
Andr
suivi d'un point d'interrogation noir dans un losange blanc
alors que je devrais avoir
André
comment faire pour afficher correctement les accents ?
merci
Hors ligne
#20 Le 30/11/2015, à 17:54
- pingouinux
Re : recherche de caractères dans un fichier texte
C'est une question d'encodage de caractères. Quel est le retour de
hd <<<"$sdj"
Hors ligne
#21 Le 30/11/2015, à 18:53
- k3c
Re : recherche de caractères dans un fichier texte
si je peux me permettre, ton texte est du HTML, le mieux serait un parser HTML, par exemple avec le langage Python et BeautifulSoup, tu n'auras pas de "faux positifs"
la doc
Debian 12 sur Thinkpad reconditionné
Hors ligne
#22 Le 30/11/2015, à 19:29
- MicP
Re : recherche de caractères dans un fichier texte
…
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
…
=======
Donc :
wget -t 2 -T 5 "http://marine.meteoconsult.fr/meteo-marine/meteo-abords-du-port/ocean-atlantique/previsions-meteo-brest-218-0.php" -O /tmp/sitemeteo.txt
encodageSource=$(sed -n 's/<meta .*charset=\(.*\)".*/\1/p' /tmp/sitemeteo.txt) # Au cas où ils changeraient d'encodage entre temps.
iconv -f $encodageSource -t UTF-8 /tmp/sitemeteo.txt > /tmp/sitemeteoUTF-8.txt
sdj=$(awk -F "[<>]" '/>Saint/ { print $(NF-2)}' /tmp/sitemeteoUTF-8.txt) && rm /tmp/sitemeteo*.txt
echo $sdj
Dernière modification par MicP (Le 30/11/2015, à 19:34)
Hors ligne
#23 Le 03/12/2015, à 19:33
- sebastien29800
Re : recherche de caractères dans un fichier texte
Merci beaucoup MicP, marche impecc !!
Hors ligne
#24 Le 04/12/2015, à 03:58
- MicP
Re : recherche de caractères dans un fichier texte
Merci pour le retour, mais je n'étais pas tout seul : J'ai copié/collé tout le travail qu'avaient déjà fait pingouinux et credenhill,
et à mon humble avis, je trouve la remarque de k3c pertinente :
…ton texte est du HTML …
Hors ligne