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