Navigation Principale
Accueil
Photos
Articles
Forum
Liens
Membres
News
Proposition de News
Téléchargements
Content Index
Bienvenue
Nom d'utilisateur:
Mot de passe:
Retenir l'identification
[
S'inscrire
]
[
Mot de passe oublié?
]
En ligne
Invités: 3, Membres: 0 ...
Record: 51
(Membres: 0, Invités: 51) le 02 avr : 02:42
Membres: 145
Dernier membre:
danync
Ajouts récents
Windows
La commande Netsh
La completion de com...
Etteindre/rebooter s...
Désinstaller MSN ...
Comment Changer l...
Mais ou est passé...
Configuration de Win...
Effacer de la mém...
Desactiver L'es...
Ajuster automatiquem...
Lancer le gestionnai...
Comment créer un ...
Delphi
Comparer une chaine ...
Est-ce qu'un re...
Fermer une applicati...
Bibliotheque de fonc...
Est-ce qu'un fi...
Obtenir les infos de...
Extraire les favoris...
Recuperer une icone ...
Comment transformer ...
Lire un fichier vide...
Trier des dates dans...
Fonction SendKey
membres
11 nov winston
19 jui danync
18 jun c-lotre
06 mar volvic
16 fév snah
Forum
Taille des répertoi...
par:
obl
problème avec le ...
par:
pierre40
DualXplorer & techno...
par:
[Bug] Services: idsv...
par:
JulienB
[Suggestion]Paste Sh...
par:
Gandarn2007
Page de Liens
Knoppix STD
The DICT Development...
Meto française et...
la region de bar sur...
Erreur du journal de...
Framakey
developpez
Who is
Icones
RFC-Editeur.org
FRAMASOFT
Reparer un disque du...
Avast
www.zebulon.fr/
xlivecd utiliser ter...
Rechercher des chaînes de caractères avec grep (1)
le samedi 13 janvier 2007
par
admin
dans
Linux
grep est un programme Unix typique. Il lit son entrée soit à l'aide de stdin soit
à partir d'un ou de plusieurs fichiers et les visualise ligne après ligne. Chaque
ligne qui satisfait le critère de recherche indiqué lors de l'appel est sortie par
stdout. En fonction des options, elle peut être complétée d'autres informations.
Ce programme peut parfaitement être intégré dans un pipeline, pour filtrer le
flux de données et exclure les lignes de données non requises.
Ainsi, si vous voulez par exemple rechercher dans le fichier syslog des messages
en relation avec le mot de passe utilisé lors de la connexion, vous pouvez lire
la totalité du fichier à l'aide de grep et rechercher la chaîne de caractères
"passwd".
localhost:~ #
grep passwd /var/log/messages
jan 2 15:41:5Q localhost passwd[3515]ï password for'root' changed by'root'
jan 2 16:02:05 localhost passwd[6040]: password for'paul' changed by'root'
jan 2 15:41:50 localhost passwd[3575]: incorrect password for'paul'
localhost:~ #
Le programme affiche en sortie les lignes comprenant la chaîne recherchée.
Il existe traditionnellement trois variantes qui se différencient par l'évaluation
de la condition de recherche à l'aide de laquelle les données sont filtrées :
fgrep
recherche une chaîne de caractères déterminée dans chaque ligne
d'entrée, indépendamment de la position de la chaîne à l'intérieur de la ligne.
grep
accepte quelques caractères spéciaux dans la condition de
recherche, autorisant ainsi une recherche plus flexible. En revanche, quelques
autres caractères doivent être précédés d'une barre oblique inverse.
egrep
se comporte fondamentalement comme grep, à ceci près que les
caractères spéciaux sont évalués sans qu'ils soient précédés d'une barre oblique inverse.
fgrep
est le plus pauvre en fonctionnalités, mais s'exécute dans de nombreux
systèmes bien plus rapidement que ses homologues. Le choix de grep ou de
egrep dépend du nombre de caractères spéciaux requis pour la formulation de
la recherche ainsi que de la nécessité de les marquer de manière spécifique.
Le grep GNU est réalisé quelque peu différemment de la commande Unix du
même nom, dans la mesure où toutes les variantes sont traitées par le même
programme. En conséquence, le choix peut également intervenir sur la base
des options plutôt que sur celle du nom du programme : grep - F est quivalent
à l'appel de fgrep, et grep - E est pratiquement identique à egrep.
Le plus simple est d'utiliser fgrep : mettez en premier paramètre une chaîne
de caractères, qui est recherchée dans chaque ligne d'entrée et détermine si la
ligne est ensuite sortie ou rejetée. Seules les lignes comprenant cette chaîne
de caractères figurent dans la sortie. La commande peut comprendre d'autres
paramètres tels que des noms de fichiers ; ces fichiers sont alors lus et
parcourus l'un après l'autre à la place de l'entrée standard. Par exemple, la
commande fgrep /home/ /etc/passwd fournit toutes les lignes du fichier des
mots de passe contenant la chaîne de caractères "/home/", ce qui correspond
vraisemblablement à tous les utilisateurs dont le répertoire personnel est situé
sous /home. Si vous préférez obtenir une liste des autres répertoires qui ne
sont pas sous /home, utilisez l'option v pour inverser l'évaluation de la
recherche : fgrep -v /home/ /etc/passwd
Il existe d'autres options courantes qui sont principalement utilisées lorsque la
recherche porte sur des programmes ou des textes normaux en langue naturelle :
-i Non-prise en compte des majuscules et des minuscules
-3 Sortie de 1a ligne recherchée ainsi que des trois lignes précédentes
et des trois lignes suivantes (le chiffre 3 peut naturellement être
remplacé par tout autre nombre positif)
-n Indication de la numérotation des lignes
-1 Les lignes sont remplacées par le nom des fichiers dans lesquels la
ligne a été trouvée (une occurrence par fichier)
Exemple : rechercher un fichier comprenant un mot
Il est important, pour les programmeurs C, de savoir dans quel fichier
d'en-tête (ces fichiers, dont l'extension est h, sont généralement localisés
dans un sous-répertoire de /usr/include) se trouve une fonction de bibliothèque.
Il est possible de faire rechercher par grep le nom de la fonction, par exemple
snprintf:
localhost:~ #
fgrep snprintf /usr/include/*.h
/usr/include/glib.h:gint g_snprintf (gchar *string,
/usr/include/glib.h:gint g_vsnprintf (gchar *string,
/usr/include/stdio.h: extern int snprintf__P ((char *__restrict__s,size_t__maxlen,
/usr/include/stdio.h:extern int__vsnprintf__P ((char *__restrict__s,size t__maxl en,
/usr/include/stdio.h:extern int vsnprintf__P ((char *__restrict__s,size t__maxlen,
localhost : ~#
La troisième ligne comprend la chaîne recherchée, qui est un mot à part entière.
Le nom du fichier stdio.h doit donc figurer dans une ligne #include dans le
programme.
Comme la recherche ne portait pas sur une chaîne de caractère fixe, fgrep était
indiqué.
Cependant, la recherche se cantonne aux fichiers figurant dans le
répertoire /usr/include lui-même, sans s'étendre aux (nombreux) sous-
répertoires.
Pour scruter une arborescence complète, il faudrait générer une liste
des fichiers entrant en compte et la passer à grep.
Nous nous contenterons pour l'instant d'indiquer une solution possible :
localhost :~ # find /usr/include -type f |xargs grep ' snprintf'
/usr/inc1ude/sidio.h:extern int snprintf__P ((char *__restrict__s,size t__maxlen,
localhost :~#
L'utilisation de l'apostrophe pour délimiter une chaîne de recherche tenant
compte des espaces permet d'exclure des réponses non pertinentes, qui
apparaissent avec les précédents critères de recherche.
grep peut surcharger le système
Certes, grep constitue un utilitaire pratique et utile. S'il est typique
pour llnix, c'est aussi parce que dans de nombreux autres systèmes
d'exploitation l'ouverture et la lecture de nombreux fichiers ne sont pas prises
en charge avec suffisamment d'efficacité pour qu`un grep puisse s'exécuter ra-
pidement.
D'un autre côté, la lecture. de Plusieurs. centaines de fichiers est coûteuse en
temps et en puissance de calcul. Exécuter un grep sur de nombreux fichiers est
donc une méthode sûre de ne pas être très appréciée, dans un système dont
vous êtes utilisateur. Naturellement, si vous êtes le seul utilisateur de
votre système Linux personnel, vous serez le seul à en subir les
désagréments ; "greppez" donc autant que vous le voulez
et profitez-en pour vous préparer un bon thé.
Source MicroApplication pcpoche Linux Toutes distributions
Compteur
Cette page aujourd'hui ...
total: 0
unique: 0
Depuis toujours ...
total: 1159
unique: 716
Site ...
total: 6433
unique: 2532
Recherche TechnoJoly
Sélectionner la langue
English
French
Titres
DLFP - Dépêches
»
Bonne lecture avec Magnum 8, le magazine de la communauté francophone de Mandriva Linux
Magnum, c’est maintenant une belle histoire débutée il y a 2 ans. Né de la volonté d’un groupe d’ut ...
»
Sortie différée de Google Chrome OS
Bien que l'annonce de la sortie de
Chrome O ...
»
Organisation de la seconde édition de l'European OpenSource & Free Software Law Event (EOLE) le 9 décembre 2009 au Parlement Européen
L'European OpenSource & Free Software Law Event (EOLE) est un événement qui a pour ambition de favo ...
»
Fedora 12 « Constantine » est disponible
Après les phases alpha et bêta, la version finale de la Fedora 12 (
Constantine
de son petit ...
»
Codec OpenSource BroadVoice
Le
codec G729
est un standard recommandé par
»
Sortie de la version 2.11 de la bibliothèque standard C GNU (glibc)
La version 2.11 de la bibliothèque C GNU (
RSS
...
»
Firefox, Google, Samsung, X
Firefox : 5 ans et une version pré-3.6
Firefox a 5 ans, et ça se fête par la pu ...
»
La gestion des bénévoles facilitée avec OpenVolunteer (v0.2)
Dix mois après la première version, OpenVolunteer vient de sortir en version 0.2. Pour rappel, Open ...
»
MimOOo ou « la plus grosse migration OpenOffice.org au monde » en questions
En septembre 2006, DLFP publiait une dépêche intitulée « La plus grosse migration
»
Le Libre au service de l'agriculture du Nicaragua
On ne peut que se féliciter lorsque le Logiciel Libre est au service du développement d'un pays du ...
»
Le Top 500 de novembre 2009
Le trente-quatrième Top 500 des supercalculateurs mondiaux est sorti aujourd'hui à l'occasion de la ...
»
Revue de presse de l'April pour la semaine 46
La
revue de presse de l'April
est régulièrement ...
»
Open Graphics lance la production de l'OGD1
La carte de développement du projet Open Graphics, OGD1, est en cours de fabrication. Les circuits ...
»
Soirée Linux et Logiciels Libres sur Sisteron (04)
Nouvelle soirée Linux et Logiciels Libres sur Sisteron organisée par
All trademarks are © their respective owners.
TechnoJoly.net n'assume pas la responsabilité
du contenu des sites extérieurs
Render time: 0.3495 second(s); 0.0647 of that for queries.