Les outils pour manipuler vos données

Trier filtrer

grep: Filtrer des données

La sortie de cette commande affiche la liste de toutes les lignes du fichier contenant le mot recherché.

/!\ Grep est sensible à la casse.

Simple utilisation de grep

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" ./

Utiliser grep avec des expressions régulières

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

sort : Trier les lignes d'un 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

wc (Word Count): compter des mots, des lignes ...

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

sed: afficher la ligne n d'un fichier

Affichera la 50ème ligne de fichier.txt

$ sed -n 50p fichier.txt

uniq: supprimer, compter les lignes en double

/!\ 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

cut: Couper en morceaux

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

diff: Comparer des fichiers ou des dossiers

Comparer deux répertoires récursivement (-r) sans être trop bavard (-q).

$ diff -qr dossier-A/ dossier-B/

astuces

ls : ne lister que les répertoires

$ ls -d */

ls : lister que les fichiers

$ ls -p|grep -v /

ls : compter les éléments d'un répertoire (fichiers et dossiers)

ls /home/user | sed -e "/\.$/d" | wc -l
21
21-Apr-2023
^