Question 1Quelles lignes uniq traite-t-elle comme des doublons ?
Outils de mise en forme — sort / uniq / cut / wc / tr / tee
Pratique le tri avec sort -n, le comptage de doublons avec sort | uniq -c, l'extraction de colonnes avec cut -d',' -f1, le comptage de lignes avec wc -l, la traduction tr 'a-z' 'A-Z' et la sortie double de tee, une commande à la fois avec schémas et terminal.
Trier les lignes — sort
Dans cet article, tu vas pratiquer six commandes de mise en forme du texte, une à la fois : sort / uniq / cut / wc / tr / tee. On commence par sort. Elle réordonne les lignes de l'entrée en ordre lexicographique (caractère par caractère). Utilise sort -n pour trier les lignes comme des nombres, et sort -r pour l'ordre décroissant. En ordre lexicographique, 10 vient avant 2 (les premiers caractères 1 et 2 sont comparés) : trier des nombres demande donc -n.
| Forme | Signification |
|---|---|
sort | Trie les lignes en ordre lexicographique |
sort -n | Trie les lignes par valeur numérique |
sort -r | Inverse l'ordre (décroissant) |
10 vient avant 2. Ajoute -n pour l'ordre numérique.printf 'cherry\napple\nbanana\n' > words.txt # crée un fichier de 3 lignes
sort words.txt # apple banana cherry (ordre lexicographique)
sort -r words.txt # cherry banana apple (décroissant)
printf '100\n9\n25\n' > scores.txt # crée un fichier numérique
sort scores.txt # 100 25 9 (le 1 passe en premier)
sort -n scores.txt # 9 25 100 (ordre numérique)
Regrouper les doublons — uniq
uniq fusionne en une seule les lignes identiques qui se trouvent côte à côte. Elle ne voit jamais les doublons éloignés : on lance donc normalement sort d'abord pour rapprocher les lignes égales, puis on lui passe le résultat par un pipe. Avec uniq -c, chaque ligne est préfixée par son nombre d'occurrences — un comptage par catégorie instantané.
| Forme | Signification |
|---|---|
uniq | Fusionne les lignes identiques adjacentes |
sort file.txt | uniq | Trie d'abord pour fusionner aussi les doublons éloignés |
uniq -c | Préfixe chaque ligne par son nombre d'occurrences |
uniq ne voit que les doublons adjacents : lance sort d'abord pour rapprocher les lignes égales.printf 'banana\napple\nbanana\napple\n' > items.txt # crée un fichier de 4 lignes
sort items.txt # apple apple banana banana
sort items.txt | uniq # apple banana (doublons supprimés)
sort items.txt | uniq -c # 2 apple / 2 banana (occurrences)
Extraire des colonnes — cut
cut découpe chaque ligne selon un délimiteur et ne garde que les champs demandés. Le délimiteur se place après -d et le numéro de champ après -f : cut -d',' -f1 extrait donc la première colonne d'un CSV. Pour plusieurs champs, liste-les avec des virgules comme -f1,3. C'est l'outil pour récupérer juste les colonnes utiles d'un CSV ou d'un fichier de configuration séparé par des deux-points.
| Forme | Signification |
|---|---|
cut -d',' -f1 | Extrait le champ 1 des lignes séparées par des virgules |
cut -d':' -f1 | Extrait le champ 1 des lignes séparées par : |
cut -d',' -f1,3 | Extrait les champs 1 et 3 ensemble |
-d, et seuls les champs numérotés par -f sont affichés.printf 'root:x:0\nuser:x:1000\n' > passwd.txt # crée un fichier séparé par des deux-points
cut -d':' -f1 passwd.txt # champ 1 seulement (les noms)
cut -d':' -f1,3 passwd.txt # champs 1 et 3
Compter lignes, mots et octets — wc
wc compte les lignes, les mots et les octets de son entrée. Sans option, elle affiche les trois nombres ; wc -l n'affiche que le nombre de lignes, wc -w que le nombre de mots et wc -c que le nombre d'octets. La plus utilisée est wc -l : alimentée par un pipe, comme dans ls | wc -l, elle répond à des questions comme « combien de fichiers ? » ou « combien de lignes correspondantes ? ».
| Forme | Signification |
|---|---|
wc | Affiche lignes, mots et octets ensemble |
wc -l | N'affiche que le nombre de lignes |
wc -w | N'affiche que le nombre de mots |
wc -c | N'affiche que le nombre d'octets |
printf 'one two three\nfour\n' > draft.txt # crée un fichier de 2 lignes et 4 mots
wc draft.txt # lignes, mots et octets ensemble
wc -l draft.txt # 2 (lignes seulement)
ls | wc -l # depuis un pipe : compte les fichiers
Traduire des caractères — tr
tr remplace les caractères de l'entrée standard caractère par caractère. tr 'a-z' 'A-Z' convertit les minuscules en majuscules. tr -s compresse les répétitions d'un même caractère en un seul (les espaces répétés, par exemple), et tr -d supprime les caractères indiqués. tr ne prend pas de nom de fichier en argument — elle lit depuis un pipe ou une redirection d'entrée.
| Forme | Signification |
|---|---|
tr 'a-z' 'A-Z' | Convertit les minuscules en majuscules |
tr -s ' ' | Compresse les caractères répétés en un seul |
tr -d 'x' | Supprime les caractères indiqués |
-s) et suppression (-d).echo 'hello linux' | tr 'a-z' 'A-Z' # HELLO LINUX
echo 'a b c' | tr -s ' ' # compresse les espaces répétés -> a b c
echo 'a-b-c' | tr -d '-' # supprime - -> abc
Envoyer la sortie vers l'écran et un fichier — tee
tee prend ce qu'elle reçoit du pipe, l'affiche à l'écran et l'écrit en même temps dans un fichier. Utilise-la quand tu veux garder une trace des résultats intermédiaires tout en passant les données à la commande suivante. Enchaînée comme commande | tee out.txt | commande suivante, elle enregistre dans out.txt pendant que le pipeline continue. Pour ajouter à la fin d'un fichier existant au lieu de l'écraser, utilise tee -a.
| Forme | Signification |
|---|---|
tee out.txt | Écrit à l'écran et dans le fichier (écrase) |
tee -a out.txt | Affiche à l'écran et ajoute à la fin du fichier |
tee affiche ce qu'elle reçoit à l'écran, l'écrit dans le fichier, et tu peux vérifier plus tard avec cat.ls | tee list.txt # affiche la liste et l'enregistre dans list.txt
cat list.txt # le fichier l'a aussi
echo 'extra' | tee -a list.txt # -a ajoute au lieu d'écraser
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Qu'affiche cut -d',' -f1 users.csv ?
Question 3Que se passe-t-il quand tu lances echo hi | tee out.txt ?