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 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

En 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)

En 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

En 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

En 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

http://www.crummy.com/software/BeautifulSoup/bs4/doc/


Archlinux sur Xiaomi Air 13

Hors ligne

#22 Le 30/11/2015, à 19:29

MicP

Re : recherche de caractères dans un fichier texte

extrait de "previsions-meteo-brest-218-0.php" a écrit :


<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 :

k3c a écrit :

…ton texte est du HTML …

Hors ligne