Ces exercices sont conçus pour les débutants qui souhaitent se familiariser avec les commandes filtres et les pipes sous Linux.
Créez un fichier texte appelé fruits.txt
contenant différents noms de fruits (un par ligne), puis utilisez grep
pour afficher uniquement les lignes contenant "pomme".
# Création du fichier
echo -e "pomme\nbanane\npomme verte\norange\nfraise\nananas" > fruits.txt
# Solution
grep "pomme" fruits.txt
Comptez le nombre de lignes dans le fichier /etc/passwd
.
wc -l /etc/passwd
Affichez les 5 premières lignes du fichier /etc/passwd
.
head -5 /etc/passwd
Affichez les 3 dernières lignes du fichier /etc/passwd
.
tail -3 /etc/passwd
Listez tous les fichiers du répertoire /etc
et filtrez pour n'afficher que ceux qui contiennent le mot "conf".
ls /etc | grep "conf"
Créez un fichier nombres.txt
contenant des nombres dans le désordre, puis utilisez la commande sort
pour les trier.
# Création du fichier
echo -e "5\n2\n9\n1\n7\n3" > nombres.txt
# Solution
sort nombres.txt
Triez numériquement (et non alphabétiquement) le fichier nombres.txt
.
sort -n nombres.txt
Affichez uniquement les noms d'utilisateurs (première colonne) du fichier /etc/passwd
.
cut -d: -f1 /etc/passwd
Affichez toutes les lignes de fruits.txt
qui ne contiennent PAS le mot "pomme".
grep -v "pomme" fruits.txt
Affichez les 3 premiers utilisateurs du système, triés par ordre alphabétique.
cut -d: -f1 /etc/passwd | sort | head -3
Créez un fichier texte contenant des mots répétés, puis comptez le nombre d'occurrences de chaque mot.
# Création du fichier
echo -e "chat\nchien\nchat\npoisson\nchien\nchat\nlapin" > animaux.txt
# Solution
sort animaux.txt | uniq -c
Trouvez tous les utilisateurs qui utilisent le shell bash.
grep "/bash" /etc/passwd
Comptez le nombre de fichiers dans le répertoire /etc
.
ls -l /etc | grep -v "^d" | wc -l
Trouvez tous les processus appartenant à l'utilisateur root.
ps aux | grep "^root"
Utilisez tr
pour remplacer toutes les lettres minuscules par des majuscules dans un fichier texte.
cat fruits.txt | tr 'a-z' 'A-Z'
Utilisez sed
pour remplacer "pomme" par "POMME" dans le fichier fruits.txt
.
sed 's/pomme/POMME/g' fruits.txt
Supprimez toutes les lignes vides d'un fichier texte.
# Création du fichier avec des lignes vides
echo -e "Ligne 1\n\nLigne 2\n\n\nLigne 3" > texte.txt
# Solution
grep -v "^$" texte.txt
Affichez le contenu d'un fichier texte avec des numéros de lignes.
cat -n fruits.txt
Trouvez toutes les lignes commençant par la lettre "p" dans le fichier fruits.txt
.
grep "^p" fruits.txt
Affichez les noms d'utilisateurs et leurs répertoires home depuis /etc/passwd
.
cut -d: -f1,6 /etc/passwd
Trouvez les 3 plus grands fichiers du répertoire /etc
(en utilisant ls, sort et head).
ls -lS /etc | head -4
Trouvez toutes les occurrences du mot "pomme" dans fruits.txt
, quelle que soit la casse.
grep -i "pomme" fruits.txt
Créez un petit fichier CSV et utilisez column
pour l'afficher de manière formatée.
# Création du fichier CSV
echo -e "Nom,Âge,Ville\nDupont,25,Paris\nMartin,34,Lyon\nDurand,42,Marseille" > personnes.csv
# Solution
column -t -s ',' personnes.csv
Comptez le nombre de mots dans un fichier texte.
wc -w fruits.txt
Utilisez find
pour trouver tous les fichiers .conf
dans le répertoire /etc
, puis comptez-les.
find /etc -name "*.conf" | wc -l
Créez un fichier contenant des lignes avec des données entre crochets, puis extrayez uniquement le texte entre crochets.
# Création du fichier
echo -e "Ceci est [important]\nVoici [un exemple] de texte\nEncore [une] information" > brackets.txt
# Solution
grep -o "\[.*\]" brackets.txt
Triez le fichier nombres.txt
dans l'ordre inverse (du plus grand au plus petit).
sort -nr nombres.txt
Créez un fichier avec plusieurs colonnes séparées par des espaces, puis extrayez la deuxième colonne.
# Création du fichier
echo -e "pomme rouge sucrée\nbanane jaune longue\nfraise rouge petite" > description.txt
# Solution
awk '{print $2}' description.txt
Comptez le nombre d'utilisateurs qui ont /bin/bash
comme shell.
grep "/bin/bash" /etc/passwd | wc -l
Listez tous les processus en cours, filtrez pour afficher uniquement ceux qui contiennent "ssh", puis affichez uniquement le PID et le nom de la commande.
ps aux | grep "ssh" | awk '{print $2, $11}'