Vous êtes sur la page 1sur 23

Extraire, trier et filtrer des

données
grep : filtrer des données
rechercher dans un fichier texte le mot voulu et affiche la ligne où il se trouve
• Syntaxe : grep [option] modèle_de_critères [fichier1 …]
• Les options du grep les plus utiles sont :
– i : pour ne pas tenir compte des majuscules/minuscules,
– v : toutes les lignes ne contenant pas le critère,
– n : pour avoir les numéros de ligne,
– E : pour les expressions régulières plus compliquées,
– c : la commande ne retourne que le nombre de lignes
trouvées
– r : rechercher dans tous les fichiers et sous-dossier
– l : rechercher dans un ou plusieurs fichiers texte le mot
voulu et affiche le nom des fichiers qui contiennent le mot
grep : filtrer des données
• Le modèle de critères peut contenir les caractères
spéciaux suivants :
– […] : Plage de caractères permis à cet emplacement
– [^…] : Plage de caractères non permet à cet
emplacement
– .: Un caractère quelconque (y compris un
espace)
– * : Signe de répétition. Agit sur le caractère placé
devant le *
– $ : Matérialise une fin de ligne
– | : ou
– ^ : début de ligne
grep : filtrer des données
– liste des lignes commençant par ! Dans le fichier
fichier1 :
grep "^!" fichier1
– recherche de STOP avec le numéro de la ligne :
grep -n -i stop fichier1
– liste de tous les fichiers qui n'ont pas "image" ou "son"
dans leur nom :
ls | grep -vE "(image|son)"
– liste des lignes contenant "image" ou "son" dans tous
les fichiers du répertoire courant :
grep -E "(image|son)" *
– Liste des lignes contenant un nombre compris entre 0
et 4 :
grep -E [0 -4] fichier1
– Liste des lignes contenant "alias" ou "Alias" :
grep -E [Aa] lias fichier1
sort : trier les lignes
• sort nom_fichier : Tri par ordre alphabétique des lignes d'un
fichier texte.
• -o : écrire le résultat dans un fichier

• -r : trier en ordre inverse


• -n : trier des nombres
• -t :définit le caractère séparateur
• -u :n'affiche qu'une seule ligne quand plusieurs lignes sont
identiques
• -k :indique la position de la clé de tri (numéro à partir de 1)
Exemple:
sort -n -t":" -k 3 /etc/passwd
wc : compter le nombre de lignes

• Affiche le nombre de lignes, de mots et d’octets


d’un fichier

• -l : compter le nombre de lignes


• -w : compter le nombre de mots
• -c : compter le nombre d'octets
• -m : compter le nombre de caractères
uniq : supprimer les doublons
• Supprimer les lignes en double dans un fichier.
(nous devons travailler sur un fichier trié )
• -c : compter le nombre d'occurrences
• -d : afficher uniquement les lignes
présentes en double
cut : couper une partie du fichier
• Couper selon le nombre de caractères
1. Par exemple, si vous souhaitez conserver uniquement
les caractères 2 à 5 de chaque ligne du fichier, vous
taperez :

2. Pour conserver du 1er au 3ème caractère :

3. pour conserver du 3ème au dernier caractère :


cut : couper une partie du fichier
• Couper selon un délimiteur
Soit le fichier notes.csv suivant :
Ces colonnes contiennent, dans l'ordre :
Le prénom
La note
Un commentaire

nous souhaitons extraire de ce fichier la liste des prénoms.


-d : indique quel est le délimiteur dans le
fichier
-f : indique le numéro du ou des champs à
couper
Pour avoir les champs n°1 et n°3 (le prénom et le commentaire) :
La commande split

• Cette commande permet de découper un


fichier en plusieurs morceaux.
• Syntaxe: split -n fichier fichiers_resultat
• Exemple: split -10 exemple petitfichiers
• Cette exemple va créer les fichiers
petitfichiersaa, petitfichiersab, …
contenant le contenu du fichier exemple
par tranche de 10 lignes.
Commandes de recherche
• sed -e " s/texte/remplacement/options "
Par exemple :
sed -e "s/bonjour/bonsoir/g" test.txt > modif.txt permet
de remplacer « bonjour » par « bonsoir » dans le texte
du fichier test.txt, et d'enregistrer le résultat dans le
fichier modif.txt
g permet d'effectuer un remplacement global (au lieu de
ne remplacer que la première occurrence du texte
rencontrée dans chaque ligne), et I, qui permet
d'effectuer une recherche sans tenir compte de la casse
des caractères.
La commande comm
La commande comm permet d'extraire les lignes
communes et les lignes uniques de 2 fichiers
préalablement triés.
􀂄 Syntaxe: comm [-123] fichier1 fichier2
􀂄 Exemple:

$ comm -12 carnet1 carnet2


marcel:13:0466342233:Marseille
13 les lignes uniques
La commande diff
Cette commande permet de rechercher des différences entre 2
fichiers.
􀂄 Syntaxe: diff -options fichier1 fichier2
􀂄 Exemples d'options:
􀂅 -b ne pas tenir compte des différences concernant des
espaces blancs
􀂅 -B ne pas tenir compte des différences concernant des lignes
blanches
􀂄 Exemple:
$ diff carnet1 carnet2
2,3c2,3
< maurice:29:0298334432:Crozon
< robert:75:0144234452:Paris
---
> myriam:30:0434214452:Nimes
> olivier:29:0298333242:Brest
Commandes de recherche
find recherche les fichiers actuellement présents
find nom_repertoire -name nom_fichier : rechercher dans le
répertoire et tous ses sous-répertoire le fichier (ou les
fichiers) et afficher son emplacement.
La commande find s'utilise de la façon suivante :
find "où" "quoi" "que faire avec"
(seul le paramètre "quoi" est obligatoire)
• Où : c'est le nom du dossier dans lequel la commande va
faire la recherche. Tous les sous-dossiers seront analysés.
• Quoi : c'est le fichier à rechercher. On peut rechercher un
fichier par son nom, mais aussi en fonction de sa date de
dernière création, de sa taille, etc.

• Que faire avec : il est possible d'effectuer des actions


automatiquement sur chacun des fichiers trouvés .
Par défaut, la commande find affiche les résultats trouvés
et ne fait rien d'autre avec.
Commandes de recherche
• Par nom

• Par taille
les fichiers qui font plus de 10 Mo

• Par date -atime, indique le nombre de jours qui vous


séparent du dernier accès à un fichier.

-type d : pour rechercher uniquement des


répertoires (directories).

• Supprimer les fichiers trouvés


Recherche de fichiers et de répertoires

• Options des sélection des fichiers et


répertoires
– name : recherche par nom de fichier
– type : recherche par type de fichier
– user : recherche par propriétaire
– group : recherche par l’appartenance à un groupe
– size : recherche par taille de fichier
– atime : recherche par date de dernier accès
– mtime : recherche par date de dernière modification
– ctime : recherche par date de création
– perm : recherche par autorisations d’accès
– links : recherche par nombre de références (links) aux fichiers

16
Recherche de fichiers et de répertoires

• Option de commande
– Les options de commande seront traitées pour chaque fichier
trouvé. En dehors de l’option –print qui montre le chemin
d’accès au fichier, on peut mettre en place l’option -exec
– Les commandes dont il est fait état derrière –exec seront
exécutées sans aucune demande de confirmation
– L’option –ok demande à l’utilisateur si la commande doit
effectivement être exécutée.

17
Recherche de fichiers et de répertoires
• Traitement sans confirmation avec –exec
• La spécification d’une commande derrière –exec est
soumise à certaines règles:
– L’option –exec doit être la dernière de la commande
find
– La commande placée derrière –exec doit être
terminée par le paramètre ;. Comme c’est un
caractère spécial, il doit être masqué par un \

18
Recherche de fichiers et de répertoires
(suite)
– Pour accéder à un des fichiers trouvés, dans
le cadre de la commande placée derrière –
exec, utilisez le raccourci {}
• Exemple
– find . –user student –exec ls –l {}\; ( affiche le
format long de la commande ls)
– find . –type f –atime +13 –exec rm {} \;
(supprime les fichiers auxquels vous n’avez
plus accédé depuis plus de 2 semaines)

19
Recherche de fichiers et de répertoires

• Traitement après confirmation avec –ok


– Les mêmes explications s’appliquent également à
l’option –ok, mais celle-ci, demande une
confirmation d’exécution de la commande pour
chaque fichier trouvé. Ce n’est qu’en cas de
réponse affirmative (avec y), que la commande
placée derrière –ok sera exécutée.
– Exemple :
• find . –ok rm {} \;
20
Recherche de fichiers et de répertoires

• Combinaison de critères pour recherches


complexes
– Les critères de sélection peuvent être combinés. Un
fichier valide doit répondre simultanément à
l’ensemble des critères définis.
– La commande find permet également des
combinaison logiques de ses options
• ! : négation logique des options
• a : liason par ET logique des options de recherche (end)
• o : liaison par OU logique des options de recherche (or)

21
Recherche de fichiers et de répertoires

• Combinaison de critères pour recherches


complexes
– Si vous utilisez plusieurs opérateurs logiques pour
combiner des options de sélection. Il faut tenir compte
de l’ordre des signes !, -a, -o.
! > -a > -o
– Pour spécifier une combinaison d’options basée sur
un lien ET ou OU, il faut placer l’ensemble de
l’expression entre parenthèse. Les parenthèses
doivent être verrouiller.
– Exemple
• find . \ ( -type d –o –name "*ham" \) -print

22
Critères de recherche de noms de
fichiers
• Modèles de noms de fichier
– * : remplace une chaîne vide ou de longueur variable
– ? : remplace un caractère unique quelconque
– [] : représente une série ou une plage de caractère
– [!…] : inverse la recherche
• Exemples
– a* : les fichiers dont le nom commence par a
– a?? : fichiers en trois lettres, commençant par a
– [aA]* : fichiers dont le nom commence par un a minuscule ou
majuscule.
– [a-m]* : fichiers dont le nom commence par une lettre de la plage a-m.
• Attention rm *

Vous aimerez peut-être aussi