La sortie de cette commande affiche la liste de toutes les lignes du fichier contenant le mot recherché.
/!\ Grep est sensible à la casse.
Rechercher un mot dans un fichier
$ grep texte fichier
Rechercher une bride de phrase dans un fichier
$ grep "morceau de phrase" fichier
Ne pas tenir compte de la casse
$ grep -i texte fichier
Mentionner le numéro de ligne ou se trouve le mot dans le fichier
$ grep -n texte fichier
Rechercher les lignes qui ne contiennent pas le mot
$ grep -v texte fichier
Rechercher dans tous les fichiers et sous dossiers
$ grep -r texte répertoire
... ou
$ rgrep texte répertoire
En combinant plusieurs options on peut très simplement identifier tous les fichiers contenant un mot particulier.
Par exemple, identifier dans le répertoire courant et ses sous répertoires, tous les fichiers contenant le mot "color".
$ grep -lir "color" ./
Pour indiquer à grep que l'on utilise des expressions régulières il faut lui donner le paramètre -E ou utiliser egrep
.
Principaux caractères spéciaux des expressions régulières
Rechercher un mot se trouvant en début de ligne
$ grep -E ^mot fichier
Rechercher un mot se trouvant en fin de ligne
$ grep -E mot$ fichier
Rechercher le mot Toby ou Boby
$ grep -E [TB]oby fichier
Renvoyer toutes les lignes qui contiennent un nombre compris entre 0 et 4.
$ grep -E [0-4] fichier
Renvoyer toutes les lignes qui contiennent un caractère alphabétique compris entre a et z ou entre A et Z.
$ grep -E [a-zA-Z] fichier
Trier le contenu en ordre alphabétique (casse sans incidence)
$ sort mots.txt
Enregistrer la sortie dans un fichier
$ sort -o triés.txt mots.txt
Inverser le tri
$ sort -r mots.txt
Mélanger l'ordre des lignes
$ sort -R mots.txt
/!\ La commande sort ne reconnaît pas si les caractères sont des nombres et trie par défaut alphabétiquement. Par conséquent, le "mot" 129 précédera 42, alors que ce devrait être l'inverse !
Trier des nombres par ordre croissant
$ sort -n nombres.txt
Compter tout le contenu d'un fichier
$ wc fichier.txt
8 17 64 mots.txt
8: le nombre de lignes
17: le nombre de mots
64: le nombre d'octets
Compter seulement les lignes
$ wc -l mots.txt
Compter seulement les mots
$ wc -w mots.txt
Compter seulement les octets
$ wc -c mots.txt
Compter les caractères
$ wc -m mots.txt
Affichera la 50ème ligne de fichier.txt
$ sed -n 50p fichier.txt
/!\ La commande uniq ne repère que les lignes successives qui sont identiques. Il convient de travailler sur un fichier trié (sort)
Supprimer les doublons
$ uniq doublons.txt
Compter les occurrences
$ uniq -c doublons.txt
Afficher les lignes en double
$ uniq -d doublons.txt
Couper tous les caractères et conserver uniquement les caractères 2 à 5 de chaque ligne du fichier
$ cut -c 2-5 mots.txt
/!\ cut se base sur le nombre d'octets or les caractères accentués compte 2 octets, seule une mise à jour du programme pourra corriger cela
Conserver du 1er au 3ème caractère
$ cut -c -3 mots.txt
/!\ si on ne met pas de chiffre au début, cut comprend que l'on parle du premier caractère.
Conserver du 3ème au dernier caractère
$ cut -c 3- noms.txt
Couper selon un délimiteur
Couper selon le délimiteur "," et conserver le champ 2
$ cut -d , -f 2 fichier.csv
Couper selon le délimiteur "," et conserver les champs 2 et 5
$ cut -d , -f 2,5 fichier.csv
Couper selon le délimiteur "," et conserver les champs 2 à 5
$ cut -d , -f 2-5 fichier.csv
Couper selon le délimiteur "," et conserver les champs 4 jusqu'au dernier champ
$ cut -d , -f 4- fichier.csv
Comparer deux répertoires récursivement (-r) sans être trop bavard (-q).
$ diff -qr dossier-A/ dossier-B/
$ ls -d */
$ ls -p|grep -v /
ls /home/user | sed -e "/\.$/d" | wc -l
21