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.

#26 Le 12/09/2008, à 13:36

Totor

Re : Questions d'un débutant (manipulation de texte)

Normal que tu en trouves autant. tes phrases sont coupées par des sauts de lignes !
Il faut donc considérer la chose autrement et plutôt partir du cas 1.
Dans ce cas, c'est plutôt :

nb=$(grep -c '^[[:blank:]]*$' fichier.txt)

l'objectif étant de compter les lignes vides.

Mais pour que ce soit toujours vrai, il faut que le fichier se termine par une ligne vide.

Ensuite, il se peut que plusieurs lignes vides se succèdent. il faut donc supprimer les doublons.
Cela donne donc :

nb=$(uniq fichier.txt|grep -c '^[[:blank:]]*$')

Maintenant, pour tenir compte du cas "dernière ligne non vide" :

nb1=$(uniq fichier.txt|grep -c '^[[:blank:]]*$')
nb2=$(uniq fichier.txt|tail -1|grep -vc '^[[:blank:]]*$')
nbparagraphe=$(($nb1+$nb2))

Dernière modification par Totor (Le 12/09/2008, à 13:49)


-- Lucid Lynx --

Hors ligne

#27 Le 12/09/2008, à 13:38

iuchiban

Re : Questions d'un débutant (manipulation de texte)

Totor a écrit :
iuchiban a écrit :

nbParagraphe = 8-6+1 donc

tu vois 7 lignes non vides dans le fichier ?
A=1ère
B=2nde
C=3ème
D=4ème
E=5ème
F=6ème

....

Dans ce cas, avec seulement une ligne vide qui sépare les différents paragraphes, tu as bien 3 paragraphes (8-6+1)
Mais si tu as des paragraphes séparés par plusieurs lignes vides, ou des lignes vides en début et fin de fichier, alors ce mode de calcul tombe à l'eau.
Et le +1 n'est là que pour avoir le bon compte (si tu comptes en UNIX, tu as les paragraphes 0, 1 et 2 donc 8-6 wink)

Là, dans le texte de achara, le calcul sera bon


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#28 Le 12/09/2008, à 13:41

achara

Re : Questions d'un débutant (manipulation de texte)

Je sais pas ou tu habites, mais je te dois un restau !

Hors ligne

#29 Le 12/09/2008, à 13:57

Totor

Re : Questions d'un débutant (manipulation de texte)

Pour finir ton exercice :
* Compter le nombre de phrase dans un texte :

nb=$(grep -o '[\.\!\?:]' fichier.txt|wc -l)

Mais ceci est uniquement valable si TOUTES les phrases sont terminées par . ou ? ou ! ou :

Du coup, tu as toutes les infos pour trouver la moyenne des phrases par paragraphe.

Dernière modification par Totor (Le 12/09/2008, à 14:10)


-- Lucid Lynx --

Hors ligne

#30 Le 12/09/2008, à 14:13

achara

Re : Questions d'un débutant (manipulation de texte)

Oui, cela fonctionne smile

Par contre, j'ai encore quelques derniers soucis...

* Pour "compter" la fréquence de la ponctuation d'un texte, j'imagine qu'il faut utiliser la commande "tr", pour ne garder que la ponctuation ([:punct:]), puis utiliser sort et uniq pour en afficher la fréquence... je ne pense pas que la fréquence le prof entende "la fréquence par rapport au nombre de caractéres total" mais par exemple ; = 4 fois , = 19 fois, .=5 fois...

*  Pour - Sortir les 25 mots non vides les plus fréquents
            - Sortir les 25 collocations de mots non vides les plus fréquentes

Je pense qu'il faut faire une combinaison de grep / uniq et  sort (j'ai les cours sous les yeux) mais là encore, je n'arrive pas à trouver la syntaxe sad


J'avoue avoir 'l'idée', mais je ne trouve absolument pas la syntaxe de la commande sad

Hors ligne

#31 Le 12/09/2008, à 14:35

achara

Re : Questions d'un débutant (manipulation de texte)

J'ai réussi à me débrouiller pour le coup de la ponctuation, en réutilisant la commande te Totor et en la modifiant un peu, je pense qu'il y avait une autre méthode plus "juste", mais la mienne fera l'affaire.

Il ne reste que sortir les 25 mots non vides les plus fréquents, sortir les 25 collocations de mots non vides les plus fréquentes.

Par collocation, le prof entend "deux mots qui se suivent, toujours les mêmes".

Quelqu'un à une idée ?

Hors ligne

#32 Le 12/09/2008, à 14:37

Totor

Re : Questions d'un débutant (manipulation de texte)

pour info, j'ai modifié mon premier poste car il était erroné sur le calcul de caractères....

sinon,je pense que ton prof entend par fréquence est plutôt : tous les "n" mots ou tous les "n" caractères...

Mais sinon, pour trouver les n mots les plus utilisés, c'est assez "simple".
1. transformer les caractères de ponctuation et les espaces en \n (de cette façon, on met un mot par ligne) et on supprime les lignes blanches
2. compter leur fréquence
3. trier
4. récupérer les n premières lignes

sed 's/([[:punct:]]|[[:blank:]])/\n/g;/^$/d' fichier.txt|uniq -c|sort -r|head -25

Bon, désolé mais je vais devoir te laisser...

Dernière modification par Totor (Le 12/09/2008, à 14:39)


-- Lucid Lynx --

Hors ligne

#33 Le 12/09/2008, à 15:19

iuchiban

Re : Questions d'un débutant (manipulation de texte)

achara a écrit :

J'ai réussi à me débrouiller pour le coup de la ponctuation, en réutilisant la commande te Totor et en la modifiant un peu, je pense qu'il y avait une autre méthode plus "juste", mais la mienne fera l'affaire.

Il ne reste que sortir les 25 mots non vides les plus fréquents, sortir les 25 collocations de mots non vides les plus fréquentes.

Par collocation, le prof entend "deux mots qui se suivent, toujours les mêmes".

Quelqu'un à une idée ?

Euh, tu as ce travail à faire depuis combien de temps???
Parce que là, ca devient compliqué.

Pour le premier, il suffit de :
- faire un tableau dynamique
- lire un mot
- si ce mot existe dans le tableau, incrémenter le compteur de 1
- si le mot existe pas, ajouter le mot et incrémenter de 1
- trier le tableau suivant les compteurs

Pour le deuxième, idem sauf que tu lit un mot, s'il existe, tu lit le suivant, et tu comptes.

Il doit falloir une semaine je pense pour faire ça quand on jamais scripté.

Tu fais quoi comme études et où??


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#34 Le 12/09/2008, à 20:28

Totor

Re : Questions d'un débutant (manipulation de texte)

Heeeeeeeeeuuu, t'as vu mon poste de 15h37 ? Pas besoin de faire tout ça wink
et pour les collocations, c'est un poile pareil !:D

Dernière modification par Totor (Le 12/09/2008, à 20:28)


-- Lucid Lynx --

Hors ligne

#35 Le 12/09/2008, à 21:28

achara

Re : Questions d'un débutant (manipulation de texte)

C'est du tout bon, j'ai envoyé le compte rendu à mon prof, je vous remercie pour votre aide, je m'en serais jamais sorti !

Hors ligne