Vous êtes sur la page 1sur 10

TP N°4

‘Système d’exploitation
Ubuntu’
Exercice 1 : Manipulation de fichiers texte avec
des filtres en ligne de commande
● cat descartes.txt: Cette commande affiche le contenu du
fichier descartes.txt.

● $cat descartes.txt | tr -cs A-Za-z '\012': Cette


commande transforme tous les caractères non alphabétiques
en

sauts de ligne (\012), puis convertit toutes les lettres en


minuscules.
-| : Le symbole pipe (|) est un opérateur de redirection en
ligne de commande qui prend la sortie de la commande à gauche
et l'utilise comme entrée pour la commande à droite.
- tr -cs A-Za-z '\012': Cette partie de la commande tr
effectue plusieurs actions :
● -c : Complément de l'ensemble de caractères spécifié.
Dans ce cas, tous les caractères qui ne sont pas des
lettres de l'alphabet.
● -s : Supprime les caractères en double consécutifs. ●
A-Za-z : L'ensemble de caractères A à Z en majuscules
et en minuscules. Cette partie de la commande
correspond à toutes les lettres de l'alphabet.
● '\012' : Représente un saut de ligne (nouvelle ligne en
ASCII). Tous les caractères non alphabétiques sont
remplacés par des sauts de ligne, séparant ainsi les mots
dans le fichier.
● $cat descartes.txt | tr A-Z a-z: Cette commande
convertit toutes les lettres majuscules en minuscules.
● sort -f: Cette commande trie les lignes de manière insensible à la
casse (-f signifie "ignore la casse").
● uniq -c: Cette commande supprime les lignes en double et affiche
le nombre d'occurrences de chaque ligne unique.
● En résumé, la commande: $cat descartes.txt | tr -cs
A-Za-z '\012' | tr A-Z a-z | sort -f | uniq -c
affiche une liste de mots uniques présents dans le
fichier descartes.txt avec le nombre d'occurrences
de chaque mot, en ignorant la casse des lettres.
Exercice 2 : Manipulation avancée de fichiers texte
1. Combien de mots ? : Environ 90494 mots.
La commande cat lesmots.txt | wc -w compte le
nombre total de mots dans le fichier lesmots.txt. Elle ne
donne pas
directement le nombre de mots différents ni le nombre de mots
dupliqués.

Combien de mots différents ?

La commande cat lesmots.txt | uniq -u | wc -w fait


ce qui suit :

Combien de mots dupliqués ?


Pour déterminer le nombre de mots dupliqués dans le fichier
"lesmots.txt", vous pouvez utiliser la commande suivante :

$cat lesmots.txt | uniq -d | wc -l

2. Pour trouver la liste des mots au pluriel (finissant par 's' ou 'x') et
commençant par 'w', vous pouvez utiliser la commande suivante :
$grep '^w.*[sx]$' lesmots.txt

3. Pour créer un fichier contenant les mots qui apparaissent plusieurs fois,
vous pouvez utiliser la commande suivante :

La commande $ cat lesmots.txt | uniq -d > copy.txt


prend le contenu du fichier "lesmots.txt", trouve les lignes (mots)
dupliquées à l'aide de la commande uniq -d, puis écrit ces lignes
dupliquées dans le fichier "copy.txt".

Pour plus de clarté, voici une explication détaillée :

● cat lesmots.txt: Affiche le contenu du fichier "lesmots.txt"


sur la sortie standard.
● uniq -d: Filtre les lignes en affichant uniquement celles qui
sont répétées (les mots dupliqués).
● > copy.txt: Redirige la sortie résultante vers le fichier
"copy.txt", créant ainsi un nouveau fichier qui contient les mots
dupliqués.

Après l'exécution de cette commande, le fichier "copy.txt" contiendra


la liste des mots dupliqués du fichier "lesmots.txt".

4. La commande $egrep '\<po[lu](.+)es\>' lesmots.txt


recherche les mots qui commencent par "po", suivis de "l" ou "u",
puis de n'importe quel caractère (représenté par ".+") et se terminent
par "es" dans le fichier lesmots.txt.

● \< : Indique le début d'un mot.


● po : Représente les caractères "po" littéralement.
● [lu] : Représente un choix entre "l" et "u". Cela signifie que le
caractère qui suit "po" peut être soit "l" soit "u".
● (.+) : Représente n'importe quelle séquence de caractères
(au moins un caractère). Les parenthèses capturantes ( et
) sont utilisées pour créer un groupe capturant, ce qui
signifie que la partie de la séquence correspondante sera
disponible pour référence ultérieure.
● es : Représente les caractères "es" littéralement.
● \> : Indique la fin d'un mot.

5. Expliquez la différence entre ces trois requêtes :


La commande $cat lesmots.txt | egrep '\<poursui(.+)es\>'
recherche toutes les lignes (mots) du fichier "lesmots.txt" qui
correspondent au motif régulier spécifié. Voici une explication détaillée
des éléments du motif :

● \< : Indique le début d'un mot.


● poursui : Représente les caractères "poursui" littéralement. ●
(.+) : Représente n'importe quelle séquence de caractères (au moins
un caractère). Les parenthèses capturantes ( et ) sont utilisées pour
créer un groupe capturant, ce qui signifie que la partie de la séquence
correspondante sera disponible pour référence ultérieure.
● es : Représente les caractères "es" littéralement.

La commande $cat lesmots.txt | egrep '\<poursui(.+)e\>'


recherche toutes les lignes (mots) du fichier "lesmots.txt" qui
correspondent au motif régulier spécifié. Voici une explication
détaillée des éléments du motif :

● \< : Indique le début d'un mot.


● poursui : Représente les caractères "poursui" littéralement. ●
(.+) : Représente n'importe quelle séquence de caractères (au
moins un caractère). Les parenthèses capturantes ( et ) sont
utilisées pour créer un groupe capturant, ce qui signifie que la
partie de la séquence correspondante sera disponible pour
référence ultérieure.
● e : Représente le caractère "e" littéralement.

La commande $cat lesmots.txt | egrep


'\<poursui(.+)e\>' recherche toutes les lignes (mots) du
fichier "lesmots.txt" qui correspondent au motif régulier spécifié.
Voici une explication détaillée des éléments du motif :

● \< : Indique le début d'un mot.


● poursui : Représente les caractères "poursui" littéralement. ●
(.+) : Représente n'importe quelle séquence de caractères (au
moins un caractère). Les parenthèses capturantes ( et ) sont
utilisées pour créer un groupe capturant, ce qui signifie que la
partie de la séquence correspondante sera disponible pour
référence ultérieure.
● es* : Représente "es" suivi de zéro ou plusieurs occurrences de
"e". L'astérisque * signifie "zéro ou plusieurs occurrences" du
caractère précédent.
● \> : Indique la fin d'un mot.

6. Pour créer un fichier contenant uniquement les mots ayant de 2


à 7 lettres, vous pouvez utiliser la commande suivante : La
commande $cat lesmots.txt | egrep '\<[a-z]{2,7}\>' >
mot27.txt recherche des mots qui ont entre 2 et 7 lettres
(uniquement des lettres minuscules) dans le fichier "lesmots.txt" et
les écrit dans un fichier nommé "mot27.txt". Explications détaillées
des éléments du motif régulier :

● \> : Indique la fin d'un mot.


● [a-z] : Représente n'importe quelle lettre minuscule
comprise entre "a" et "z".
● {2,7} : Indique que le motif précédent (une lettre minuscule)
doit apparaître entre 2 et 7 fois.
● \> : Indique la fin d'un mot.

Vous aimerez peut-être aussi