Vous êtes sur la page 1sur 3

Trouver du texte dans un fichier (grep)

La commande grep est un pivot des commandes UNIX. Elle cherche une expression
rationnelle
dans
un
ou
plusieurs
fichiers,
exemple :
[delcros@mistra delcros]$grep fouille linux-commande.html
grep, la commande qui vous fouille les fichiers
La commande a donc affich la ligne qui contient le mot "fouille" dans le fichier
linux-commande.html.
La richesse de la commande grep permet de faire des recherches sur plusieurs fichiers
et d'avoir un format de sortie adquat. Par exemple, le fichier linux-commande.html est dj
assez important et il serait agrable de savoir o se trouve cette ligne qui contient le mot
fouille
dans
le
fichier :
[delcros@mistra delcros]$grep -n fouille linux-commande.html
902: Grep, la commande qui vous fouille les fichiers
Le mot fouille se trouve la ligne numro 902 et c'est l'option -n qui nous a permis de
connatre ce numro.
Une autre option trs utile est -l qui permet de n'afficher que les noms des fichiers
contenant
ce
que
l'on
cherche :
[delcros@mistra delcros] $grep -l fouille /home/delcros/personnel/html/*
/home/delcros/personnel/html/linux-commande.html
Ici, j'ai demand la commande grep de chercher l'occurence "fouille" dans les
fichiers du rpertoire /home/delcros/personnel/html/. Le rsultat est le nom des fichiers qui
contiennent l'occurence. Ici, seul le fichier "linux-commande.html" dans le rpertoire
contient
le
mot
"fouille".
Quelques-unes
des
autres
options :
-c donne le nombre de fois o l'expression rationnelle a t rencontre dans le fichier :
[delcros@mistra
delcros]$
grep
-c
fouille
linux-commande.html
10
-n est utile lorsque vous cherchez une expression rationnelle qui commence par un
tiret car si vous n'utilisez pas l'option -n, grep la considrera comme une option !

La commande cut
La commande cut permet d'afficher des zones spcifiques d'un fichier. Par exemple :
cut -c1 /etc/passwd

affichera la premire colonne du fichier /etc/passwd. Il existe d'autres spcifications


(tableau 1.4) :

Tableau 1.4: Spcifications de la commande cut.


Option

Signification

-c1-5

Permet de slectionner les colonnes 1 5.

-c14-

Permet de slectionner de la colonne 14 la


dernire.

-c1-3,14-18

Permet de spcifier plusieurs plages de


colonnes.

On peut galement spcifier un sparateur de champs avec l'option -d. Par exemple :
cut -d: -f6 /etc/passwd
affichera le 6eme champ du fichier /etc/passwd, dont le sparateur de champs est le
caractre double point (``:'').

Conversion de chanes de caractres avec tr


La commande tr permet de convertir une chane de caractres. Par exemple :
tr "[A-Z]" "[a-z]" < /etc/passwd
ou encore
tr

"ai" "as" < /etc/passwd | less

Le rsultat s'affiche l'cran. Le fichier ne sera pas modifi avec la commande prcdente. Il
existe plusieurs options, telles que (tableau 1.6) :

Tableau 1.6: Options de la commande tr.


Option Signification
-c

-d
-s

Tous les caractres qui ne sont pas spcifis


dans la premire chane sont convertis selon
les caractres de la seconde.
Efface le caractre spcifi.
Si le caractre spcifi se rpte plusieurs
fois de suite, il est rduit une seule unit.

Voici plusieurs exemples illustrant l'utilisation de ces options :

pour convertir les fichiers Dos au format UNIX (sans retour chariot) :
tr -d '\015' < fichier.dos > fichier.linux
pour effacer tous les ``0'' du fichier /etc/passwd :
tr -d "0" < /etc/passwd
pour rduire toute suite de ``0'' un seul ``0'' dans le fichier /etc/passwd :
tr -s "0" < /etc/passwd
pour rduire toute suite de caractres non comprise (par ordre alphabtique) entre ``a''
et``s'' un seul dans le fichier /etc/passwd :
tr -cs "[a-s]" < /etc/passwd | less
Par exemple, ``root'' contient deux fois ``o'', mais ``o'' est compris entre ``a'' et ``s'',
donc ``root'' ne sera pas chang. Par contre, ``uucp'' contient deux fois ``u'', et sera
donc convertit en ``ucp''.

sed Editeur de texte batch


awk Language de programmation pour traitement de fichier