Télécharger le fichier csv Cas.csv sur Pronote puis l'ouvrir avec LibreOffice
Il y a un problème d'encodage avec ce fichier
Certains caractères accentués, comme ô dans Côte D'Azur, ne sont pas reconnus
Entrez la commande CTRL+F ou Cmd+F (pour Find) et faire rechercher et remplacer Côte D'Azur (non reconnu) par Côte D'Azur, pour tous
Combien y-a-t-il d'occurrences ?
Corriger les erreurs
Télécharger sur Pronote le fichier texte golden_bug.txt
Ouvrir un environnement Python, télécharger le fichier Python sur Pronote ou ici recherche_motif.py
L'ouvrir et compléter la fonction positions(texte,motif) qui retourne sous la forme d'une liste, toutes les occurences du motif dans le texte
Exécuter la fonction sur le fichier golden_bug.txt et le motif "maintenant"
Combien d'occurrences ?
Chronométrer le temps mis par l'exécution de la fonction
Recommencer avec le même motif et le fichier texte don_quichotte_T1.txt
Avec l'aide de votre cours implémenter la fonction creer_dico_motif(motif) qui crée le dictionnaire qui associe à chaque caractère non final du motif sa dernière occurence non finale
Avec l'aide de votre cours implémenter la fonction BM_MC(texte,motif,dico) qui retourne la liste des occurences du motif dans le texte avec la règle du mauvais caractère
Vérifier que vos fonctions passent les tests
Puis à l'aide de BM_MC(texte,motif,dico) rechercher le motif "maintenant" dans le texte golden_bug.txt, puis don_quichotte_T1.txt
Ensuite chrométrer l'exécution de BM_MC(texte,motif,dico) et comparer avec la recherche naïve
Il s'agit de découvrir quelques outils du bash permettant de faire des recherches sur les fichiers d'une machine ayant un système d'exploitation de type Unix
D'une certaine manière l'ensemble des fichiers de l'utilisateur peut être considéré comme un texte et un critère de recherche comme un motif
On va commencer par s'intéresser à la commande find
La commande find permet de chercher des fichiers (sans tenir compte de leur contenu ) répondant à certains critères
Par exemple on cherche tous les fichiers texte contenu dans son espace de travail ~, dans ce cas on entre la commande
find ~ -name '*.txt'
Si on veut chercher tous les fichiers dont le nom contient le mot info
find ~ -name '*info*'
Si on veut chercher toutes les images .png ou .jpg on va utiliser l'opérateur -or ainsi
find ~ -name '*.png' or -name '*.jpg'
On peut associer à une recherche l'exécution d'une commande
Par exemple si on veut pour chaque fichier texte trouvé compter le nombre de lignes du fichier texte et afficher le résultat
find ~ -name '*.txt' -exec wc -l {} ';'
man find
On aimerait faire une recherche à l'intérieur des fichiers
On va utiliser pour cela à la commande grep qui nous permettra de sélectionner des lignes contenant un motif
Créer un fichier texte fichier1.txt avec l'éditeur nano en entrant la commande
nano fichier1.txt
Ecrire les lignes puis faire CTRL X puis confirmer pour sauvegarder
Un homme
Des bonhommes
Des gentilhommes
Un livre
Pour extraire du fichier fichier1.txt les lignes contenant le motif homme entrer la commande
grep 'homme' fichier1.txt
Si on veut que le motif soit considéré comme un mot entier alors on utilise grep avec l'option -w
grep -w 'homme' fichier1.txt
On observe alors que seule la première ligne sera sélectionnée
On va cette fois ci sélectionner des colonnes
On va utiliser pour cela à la commande cut
On va télécharger un fichier .csv du site mathly.fr avec la commande wget,mais comme au Lycée on a accès au réseau Internet via un proxy, on utilise l'option -e avec paramètres use_proxy=on et http_proxy=10.0.0.1:3128
wget -e use_proxy=on -e http_proxy=10.0.0.1:3128 http://www.mathly.fr/terminale_20_21.csv
Le fichier terminale_20_21.csv est enregistré dans le répertoire courant
Pour afficher la première ligne du fichier terminale_20_21.csv (métadonnées)
On entre la commande
head -n1 terminale_20_21.csv
On veut sélectionner les lignes du fichier terminale_20_21.csv contenant le motif 'Numérique et sciences informatiques'
grep 'Numérique et sciences informatiques' terminale_20_21.csv
On veut sélectionner les colonnes du fichier terminale_20_21.csv contenant la spécialité Numérique et sciences informatiques
Il faut tenir compte des métadonnées
Il faut sélectionner le champ numéro 2 (field) avec le délimiteur (;)
cut -d';' -f2 terminale_20_21.csv
Le résultat de cette commande est affichée dans le terminal
On aimerait conserver le résultat dans un fichier spe_terminale.txt
On va rediriger la sortie non pas vers le terminal mais vers le fichier spe_terminale.txt
cut -d';' -f2 terminale_20_21.csv>spe_terminale.txt