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 07/06/2012, à 11:00

roger64

(résolu) Compter occurrences des items listés dans un fichier html

Bonjour

Il s'agit de rechercher dans un fichier epub (à la dénomination près, ce n'est qu'un fichier zip) qui contient un sous-dossier Text, lui -même contenant des fichiers html les styles css utilisés et leurs occurrences.

La première partie de la question est déjà résolue avec la commande suivante qui fournit la liste des styles utilisés.

roger@lmde64 ~/Bureau/Coups/OEBPS/Text $ pcregrep -o -h 'class=".+?"' * | sort -u | perl -p -e 's/class="//' | perl -p -e 's/("\n| )/|/' | perl -p -e 's/\|$//g'
Centrage|Chanson|frameFrame|Header|Heading|Italdroite|let|let1|let2|smcpCentrage|smcpChanson|smcpDroite|smcpIncise|smcpTypeA|smcpTypeV|Standard|Subtitleroger@lmde64 ~/Bureau/Coups/OEBPS/Text $ 

La liste ci-dessus qui commence par Centrage est la liste des styles utilisés.
Idéalement, je souhaiterais y ajouter le nombre d'occurrences de chaque style de façon à avoir, par exemple:
Centrage 2|Chanson 8| etc.

Dernière modification par roger64 (Le 08/06/2012, à 06:41)

Hors ligne

#2 Le 08/06/2012, à 05:56

roger64

Re : (résolu) Compter occurrences des items listés dans un fichier html

Bonjour

J'ai obtenu un autre code mais il ne fonctionne pas chez moi pour une raison que j'ignore:

for i in $(for i in $(pcregrep -o -h 'class=".+?"' * | sort -u); do echo "$i $(grep -r $i | wc -l)"; done | sort -t ' ' -k2 -nr

qui est censé donner une liste alphabétique avec les classes css et leurs occurences.
La partie         

pcregrep -o -h 'class=".+?"' *

fonctionne très bien et donne un résultat immédiat.

roger@lmde64 ~/Bureau/Coups/OEBPS/Text $ pcregrep -o -h 'class=".+?"' * | sort -u 
class="Centrage"
class="Chanson"
class="frameFrame"
class="Header"
class="Heading"
class="Italdroite"
class="let"
class="let1"
class="let2"
class="smcpCentrage"
class="smcpChanson"
class="smcpDroite"
class="smcpIncise"
class="smcpTypeA"
class="smcpTypeV"
class="Standard"
class="Subtitle"
roger@lmde64 ~/Bureau/Coups/OEBPS/Text $

Cependant, en ce qui concerne la première expression ci-dessus, le curseur clignote dix seconds puis s'arrête. Je peux quitter le prompt avec Ctrl+C.

J'ai bien sûr installé le paquet pcregrep

Dernière modification par roger64 (Le 08/06/2012, à 05:59)

Hors ligne

#3 Le 08/06/2012, à 06:25

pingouinux

Re : (résolu) Compter occurrences des items listés dans un fichier html

Bonjour,
Que donne ceci ?

pcregrep -o -h 'class=".+?"' * >fic_tmp.$$
for i in $(sort -u fic_tmp.$$); do echo "$i $(grep -r $i fic_tmp.$$ | wc -l)"; done | sort -t ' ' -k2 -nr
rm fic_tmp.$$

Ce qui bloquait, c'est que dans

$(grep -r $i | wc -l)

ton grep lisait sur stdin.

Ajouté :
Ou mieux

for i in $(sort -u fic_tmp.$$); do echo "$i $(grep -rc $i fic_tmp.$$)"; done | sort -t ' ' -k2 -nr

Dernière modification par pingouinux (Le 08/06/2012, à 06:30)

Hors ligne

#4 Le 08/06/2012, à 06:39

roger64

Re : (résolu) Compter occurrences des items listés dans un fichier html

Bonjour

Je suis toujours éberlué de voir un gourou à l'œuvre!! smile
Cela fonctionne très bien. Merci beaucoup!

roger@lmde64 ~ $ cd  ~/Bureau/Coups/OEBPS/Text
roger@lmde64 ~/Bureau/Coups/OEBPS/Text $ pcregrep -o -h 'class=".+?"' * >fic_tmp.$$
roger@lmde64 ~/Bureau/Coups/OEBPS/Text $ for i in $(sort -u fic_tmp.$$); do echo "$i $(grep -rc $i fic_tmp.$$)"; done | sort -t ' ' -k2 -nr
class="smcpIncise" 114
class="Header" 40
class="smcpCentrage" 31
class="let2" 22
class="let" 22
class="let1" 22
class="Centrage" 16
class="Standard" 14
class="smcpDroite" 13
class="smcpTypeV" 11
class="smcpTypeA" 10
class="Subtitle" 3
class="Italdroite" 3
class="smcpChanson" 1
class="Heading" 1
class="frameFrame" 1
class="Chanson" 1
roger@lmde64 ~/Bureau/Coups/OEBPS/Text $ 

Dernière modification par roger64 (Le 08/06/2012, à 06:40)

Hors ligne