Pipe, grep & Co

Pipe

 

Le pipe || permet d’effectuer 2 commandes simultanément. Il peut aider pour des commandes spécifiques ou puissantes.

Exemple : Si on un fichier avec beaucoup de contenu, quand on utilise la commande cat le terminal va directement à la dernière ligne, on a pas le temps de tout lire. Pour éviter cela, on peut utiliser la commande ci-dessous qui permettra de lire le fichier tout en le découpant en différentes pages, permettant de lire complètement et simplement son contenu :

cat <fichier> | less

2 alternatives existantes également:

cat <filename> | pg
 
cat <filename> | more

 

Commandes grep

Maintenant, comment rechercher des informations dans un fichier, il faut utiliser la commande grep qui va permettre de scanner un document et qui va permettre de choisir/ de custom le résultat de sortie.

Lister les lignes d'un fichier qui contiennent un a :

cat <filename> | grep -i a

Pour lister le contenu / les lignes d'un fichiers qui ne contiennent pas de a :

cat <filename> | grep -v a

-v affiche les lignes ne contenant pas la chaîne

-c compte le nombre de lignes contenant la chaîne

-n chaque ligne contenant la chaîne est numérotée

-x ligne correspondant exactement à la chaîne

-l affiche le nom des fichiers qui contiennent la chaîne

 

Les différentes expressions régulières sont :

^ début de ligne

. un caractère quelconque

$ fin de ligne

x* zéro ou plus d'occurrences du caractère x

x+ une ou plus occurrences du caractère x

x? une occurrence unique du caractère x

[...] plage de caractères permis

[^...] plage de caractères interdits

\{n\} pour définir le nombre de répétition n du caractère placé devant

 

Exemple : 

L'expression [a-z][a-z] * cherche les lignes contenant au minimum un caractère en minuscule. [a-z] caractère permis, [a-z]* recherche d'occurrence des lettres permises.

 

[a-z]+

Cherche toutes les lignes contenant au minimum une lettre en minuscule. Le critère avec grep aurait été [a-z][a-z]*.

 

^[0-9]\{3\}$

cherche toutes les lignes contenant uniquement un nombre à 3 chiffres.

 

:[0-9]\{2,\}:

cherche toutes les lignes contenant des nombres de minimum 2 chiffres avant les deux points (``:'').

 

^[0-9]\{1,5\}:

cherche toutes les lignes commencant par des nombres de minimum 1 à 5 chiffres suivits par deux points (``:'').

 

(une|deux) fois

cherche toutes les lignes contenant la chaîne ``une fois'' ou ``deux fois''.

La commande fgrep effectue une recherche plus rapide, mais ne reconnaît pas les caractères spéciaux. Comme pour egrep, on peut spécifier un fichier contenant un ou des critères de recherche avec l'option -f. Un tel fichier pourra par exemple contenir :

 

une fois
deux fois

et les lignes contenant l'un ou l'autre de ces textes seront recherchées.