Le nom du filtre grep correspond aux initiales de l’expression global regular expression print. grep affiche les lignes d’un fichier de texte contenant une « expression régulière » donnée. Les expressions régulières les plus simples, les seules que nous utiliserons ici, sont des chaînes de caractères. Par exemple, la commande grep est très utilisée pour rechercher les lignes contenant un mot donné dans un fichier. La syntaxe de la commande grep est la suivante:  
problème génération shellcmds verbatimLa commande grep affiche toutes les lignes du fichier passé en deuxième argument (ou à défaut de l’entrée standard) qui contiennent l’expression régulière donnée en premier argument. La commande peut porter sur plusieurs fichiers, et dans ce cas, par défaut, chaque ligne affichée est précédée du nom du fichier correspondant.

Dans l’exemple ci-dessus, le mot evry est recherché dans le fichier /etc/hosts. Si grep ne renvoie aucun résultat alors le mot evry n’a pas été trouvé dans le fichier, sinon grep affiche les lignes du fichier contenant ce mot.

Pour rechercher le mot alias dans tous les fichiers commençant par « . », il faut exécuter:

 
problème génération shellcmds verbatim

grep affiche alors le nom du fichier dans lequel le mot alias a été trouvé puis la ou les lignes contenant ce mot.

Pour afficher les lignes ne contenant pas une certaine expression, il faut utiliser l’option -v. Il existe beaucoup d’autres options: -n pour affichage des numéros de lignes, -l pour afficher le nom des fichiers dans lesquels l’expression est trouvée, -i pour indifférencier les majuscules des minuscules...

Il est parfois utile d’extraire d’un fichier une partie seulement des informations de chaque ligne. La commande cut permet d’afficher une portion de chaque ligne des fichiers passés en arguments ou à défaut de l’entrée standard. La portion sélectionnée peut être définie en termes de caractères (option -c) ou en termes de champs (-f) et parfois en termes d’octets (option -b). Il faut obligatoirement utiliser l’une de ces options suivie d’une liste d’entiers séparés par des virgules. Le séparateur de champ par défaut est le caractère tabulation qui peut être remplacé par le caractère x avec l’option -dx (et non -tx comme nous verrons pour sort).

Les deux exemples suivants sont des utilisations simples de cut. Pour afficher le deuxième champ de chaque ligne du fichier fich avec une tabulation comme séparateur, il faut écrire:

 
problème génération shellcmds verbatim

Pour modifier le séparateur, il faut utiliser l’option -d. Ainsi pour que le séparateur soit un espace et non une tabulation, il faut écrire:

 
problème génération shellcmds verbatim

Pour afficher le troisième caractère de chaque ligne du fichier fich, il faut écrire:

 
problème génération shellcmds verbatim

Nous ajoutons deux exemples plus complexes d’utilisation de cut. Vous avez vu, à la section 4 la commande who permettant de savoir qui est connecté à un moment donné. Cette commande affiche une ligne par utilisateur connecté. Sur chaque ligne, les huit premiers caractères correspondent au nom de connexion. Le premier exemple récupère uniquement le nom de connexion de tous les utilisateurs connectés à un moment donné. Le résultat de who est passé à cut qui sélectionne les huit premiers caractères avec l’option -c1-8.

 
problème génération shellcmds verbatim

Le second exemple analyse le fichier /etc/passwd. Le fichier /etc/passwd contient une ligne par utilisateur autorisé à se connecter au système. Chaque ligne contient le nom de l’utilisateur et un certain nombre d’informations. Chacun de ces champs est séparé du précédent par :. La commande suivante récupère le nom des utilisateurs. Pour afficher les noms des utilisateurs contenus dans le fichier /etc/passwd, cut redéfinit le séparateur de champs avec l’option -d pour que le séparateur soit le caractère :, puis affiche le premier champ avec l’option -f1.

 
problème génération shellcmds verbatim  
 
Retour à la page de cours