Maison  >  Article  >  Opération et maintenance  >  Introduction à la commande Linux grep

Introduction à la commande Linux grep

巴扎黑
巴扎黑original
2017-09-04 14:12:052170parcourir

1. Fonction

La commande grep dans le système Linux est un puissant outil de recherche de texte. Elle peut utiliser des expressions régulières pour rechercher du texte et imprimer les lignes correspondantes. Le nom complet de grep est Global Regular Expression Print, ce qui signifie la version globale de l'expression régulière. Ses autorisations d'utilisation sont destinées à tous les utilisateurs.

2. Format

grep [options]

3. Paramètres principaux

[options] Paramètres principaux :

-c : Seul le nombre de lignes correspondantes est affiché.

-I : Insensible à la casse (applicable uniquement aux caractères uniques).

-h : n'affiche pas les noms de fichiers lors de l'interrogation de plusieurs fichiers.

-l : lors de l'interrogation de plusieurs fichiers, seuls les noms de fichiers contenant des caractères correspondants seront affichés.

-n : Afficher les lignes et les numéros de ligne correspondants.

-s : n'affiche pas les messages d'erreur qui n'existent pas ou qui n'ont pas de texte correspondant.

-v : Afficher toutes les lignes qui ne contiennent pas de texte correspondant.

Paramètres principaux de l'expression régulière du modèle :

 : Ignorer la signification originale des caractères spéciaux dans l'expression régulière.

^ : correspond à la ligne de départ de l'expression régulière.

$ : correspond à la ligne de fin de l'expression régulière.

< : Commencez par la ligne correspondant à l'expression régulière.

> : jusqu'à la fin de la ligne correspondant à l'expression régulière.

[ ] : Un seul caractère, tel que [A], c'est-à-dire A répond aux exigences.

[ - ] : plage, telle que [A-Z], c'est-à-dire A, B, C à Z répondent tous aux exigences.

. : Tous les personnages uniques.

* : Il y a des caractères, et la longueur peut être 0.

4. Un exemple simple utilisant la commande grep

$ grep 'test' d*

Afficher toutes les lignes contenant test dans les fichiers commençant par d.

$ grep 'test' aa bb cc

Affiche les lignes correspondant au test dans les fichiers aa, bb, cc.

$ grep '[a-z]{5}' aa

Affiche toutes les lignes contenant des chaînes dont chacune comporte au moins 5 caractères minuscules consécutifs.

$ grep 'w(es)t.*1′ aa

Si west correspond, es est stocké en mémoire et marqué comme 1, puis recherche n'importe quel nombre de caractères ( . *), ces caractères sont suivis d'un autre es(1), et la ligne s'affiche une fois trouvée. Si vous utilisez egrep ou grep -E, il n'est pas nécessaire de s'échapper avec le signe "", écrivez-le simplement directement sous la forme 'w(es)t.*1'.

Commande 5.grep utilisant des exemples complexes

Supposons que vous recherchiez des fichiers avec la chaîne 'magic' dans le répertoire '/usr/src/Linux/Doc' :

$ grep magic /usr/src/Linux/Doc/*

sysrq.txt :* Comment activer la clé magique SysRQ ?

sysrq.txt :* Comment utiliser la clé magique SysRQ ? Clé magique SysRQ ?

Le fichier 'sysrp.txt' contient cette chaîne et discute de la fonction de SysRQ.

Par défaut, 'grep' recherche uniquement le répertoire courant. S'il y a de nombreux sous-répertoires dans ce répertoire, 'grep' les listera comme ceci :

grep: sound: Est un répertoire

Cela peut rendre la sortie de 'grep' difficile à lire. Il y a deux solutions ici :

Demander explicitement de rechercher des sous-répertoires : grep -r

ou ignorer les sous-répertoires : grep -d skip

S'il y a beaucoup de résultats, vous peut le diriger vers 'less' pour le lire :

$ grep magic /usr/src/Linux/Documentation/* | less

De cette façon, vous pouvez le lire plus facilement.

Une chose à noter est que vous devez fournir une méthode de filtrage de fichiers (utilisez * pour rechercher tous les fichiers). Si vous oubliez, 'grep' attendra que le programme soit interrompu. Si vous rencontrez ce problème, appuyez sur et réessayez.

Il y a quelques paramètres de ligne de commande intéressants ci-dessous :

fichiers de modèles grep -i : recherchez sans tenir compte de la casse. La valeur par défaut est sensible à la casse,

fichiers de modèles grep -l : seuls les noms de fichiers correspondants sont répertoriés,

fichiers de modèles grep -L : les noms de fichiers sans correspondance sont répertoriés,

grep -w fichiers de modèles : ne correspondent qu'au mot entier, pas à une partie de la chaîne (comme faire correspondre "magique", pas "magique"),

grep -C fichiers de modèles numériques : correspondent respectivement au contexte Afficher [ number] lignes,

fichiers grep pattern1 | pattern2 : afficher les lignes correspondant à pattern1 ou pattern2,

grep pattern1 files grep pattern2 : afficher les lignes correspondant à la fois à pattern1 et pattern2.

les fichiers de modèles grep -n peuvent afficher les informations sur le numéro de ligne

les fichiers de modèles grep -c peuvent trouver le nombre total de lignes

Il existe également des symboles spéciaux pour la recherche :

< et > marquent respectivement le début et la fin des mots.

Par exemple :

grep man * correspondra à 'Batman', 'manic', 'man', etc.,

grep '

grep '' ne correspond qu'à 'man', pas aux autres chaînes telles que 'Batman' ou 'manic'.

'^' : signifie que la chaîne correspondante est au début de la ligne,

'$' : signifie que la chaîne correspondante est à la fin de la ligne,

Liste d'utilisation des commandes Grep

1. Paramètres :

-I : Ignorer la casse

-c : Imprimer le nombre de lignes correspondantes

-l : Rechercher les fichiers contenant Match

-v : Rechercher les lignes qui ne contiennent pas de correspondances

-n : Imprimer les lignes et les étiquettes de ligne qui contiennent des correspondances

RE (expression régulière). )

Ignorer la signification originale des caractères spéciaux dans l'expression régulière

^ Faire correspondre la ligne de début de l'expression régulière

$ Faire correspondre la ligne de fin de l'expression régulière

< Commencez par la ligne correspondant à l'expression régulière

> à la fin de la ligne qui correspond à l'expression régulière

[ ] un seul caractère tel que [A] signifie que A répond aux exigences

[ - ] plage ; [A-Z] signifie que A, B, C à Z répondent tous aux exigences

Tous les caractères simples

* Tous les caractères, la longueur peut être 0

Exemple

3. 🎜>

# ps -ef | grep in.telnetd

root 19955 181 0 13:43:53 ? fichier

b124230

b034325

a081016

m7187998

m7282064

a022021

a 061048

m9324822

b103303

a013386

b044525

m8987131

B081016

M 45678

B103303

BADc2345

# more size.txt | plage grep '[a-b]' telle que [A-Z], c'est-à-dire A, B, C à Z ; tous répondent aux exigences

b124230

b034325

a081016

a022021

a061048

b103303

a013386

b044525

# plus size.txt | grep '[a-b]'*

b124230

b034325

a081016

m7187998

m7282064

a022021

a061048

m9324822

b103303

a013386

B044525

M8987131

B081016

M45678

B103303

BADC2345

# Plus taille .txt | grep 'b' caractère unique ; tel que [A] Autrement dit, A répond aux exigences

b124230

b034325

b103303

b044525

# plus size.txt | grep '[ bB]'

b124230

b034325

b103303

b044525

B081016

B10330 3

BADc2345

# grep 'root' /etc/group

root::0:root

bin::2:root,bin,daemon

sys::3:root,bin,sys,adm

adm::4:root,adm,daemon

uucp::5:root,uucp

mail ::6:root

tty::7:root,tty,adm

lp::8:root, lp,adm

nuucp::9:root, nuucp

daemon::12:root,daemon

# grep '^root' /etc/group correspond au début ligne de l'expression régulière

root::0:root

# grep 'uucp' /etc/group

uucp::5:root,uucp

nuucp::9:root,nuucp

# grep '

uucp::5:root,uucp

# grep ' root$' /etc/group correspond à la ligne de fin de l'expression régulière

root::0:root

mail::6:root

# more size.txt | grep -i 'b1..*3' -i : ignorer la casse

b124230

b103303

B103303

# plus size.txt | -iv 'b1..*3' -v : Ne trouve aucune correspondance Les lignes

b034325

a081016

m7187998

m7282064

a022021

a061 048

m9324822

a013386

b044525

m8987131

B081016

M45678

BA Dc2345

# plus size.txt | grep -in 'b1..*3'

1:b124230

9:b103303

15:B103303

# grep '$' /etc/init.d/nfs.server | wc -l

128

# grep ' $' /etc/init.d/nfs.server | wc -l ignore La signification originale des caractères spéciaux dans les expressions régulières

15

# grep '$' /etc/init.d /nfs.server

case "$1" dans

>/tmp/sharetab.$$

[ "x$fstype" != xnfs ] &&

echo "$patht$rest$fstypet$optst$desc"

>>/tmp/sharetab.$$

/usr/bin/touch -r /etc/ dfs/sharetab /tmp/sharetab.$$

/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab

if [ -f /etc/ dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)'

if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] &&

if [ $startnfsd -ne 0 ]; then

elif [ ! -n "$_INIT_RUN_LEVEL" ]; then

while [ $wtime -gt 0 ]; 🎜>

wtime=`expr $wtime - 1`

if [ $wtime -eq 0 ]; then

echo "Utilisation : $0 { start | stop }"

# plus size.txt

le fichier de test

ce sont des fichiers

La fin

# grep 'le' size.txt

le fichier de test

ce sont des fichiers

# grep '

le fichier de test

ce sont des fichiers

# grep '>' size.txt

le fichier de test

# grep '' size.txt

le fichier de test

# grep '<[Tt]he> size.txt

le fichier de test

=============== =================== ================================ ====

1, Introduction

Un outil de recherche de texte polyvalent utilisant des expressions régulières. Cette commande php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag"> est à l'origine un éditeur de ligne ed. A php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">Command/Filter :

g/re/p -- global - expression régulière - imprimer.

Format de base

modèle grep [fichier...]

(1) chaîne de recherche grep [nom de fichier]

(2)grep expression régulière [nom du fichier]

Rechercher toutes les occurrences de motif dans le fichier. Le motif peut être soit une chaîne à rechercher, soit une expression régulière.

Remarque : il est préférable d'utiliser double. guillemets lors de la saisie de la chaîne à rechercher/et lors de l'utilisation d'expressions régulières pour la correspondance de modèles, faites attention à l'utilisation de guillemets simples

2, option grep

-c Afficher uniquement le nombre de lignes correspondantes

-i insensible à la casse (pour les caractères uniques)

-n afficher les numéros de ligne correspondants

-v ne pas afficher aucune correspondance Toutes les lignes de texte

-s n'affiche pas de messages d'erreur

-E utilise des expressions régulières étendues

Pour plus d'options, veuillez consulter : man grep

3, Exemples de grep couramment utilisés

(1) Requête de fichiers multiples

grep "sort" *.doc #Voir la correspondance du nom de fichier

(2) Correspondance de lignes : afficher le nombre de lignes correspondantes

grep -c "48" data.doc #Afficher le nombre de lignes contenant 48 caractères dans le document

(3) Afficher les lignes correspondantes et le nombre de lignes

grep -n "48" data .doc #Afficher toutes les lignes et numéros de ligne correspondant à 48

(4) Afficher les lignes qui ne correspondent pas

grep -vn "48" data.doc # Afficher toutes les lignes qui ne contiennent pas 48

(4) Afficher les lignes qui ne correspondent pas

grep -vn "48" data.doc #Afficher toutes les lignes qui ne contiennent pas 48

(5) Sensible à la casse

grep -i "ab" data.doc #Afficher toutes les lignes contenant des chaînes de ab ou Ab

4, application d'expressions régulières

(1) Application d'expressions régulières (note : il est préférable de mettre les expressions régulières entre guillemets simples)

grep '[239].' #Afficher tous les caractères se terminant par 2, 3 ou les lignes commençant par 9 et contenant deux nombres

(2) Test sans correspondance

grep '^[^48]' data.doc #Ne correspond pas aux lignes commençant par 48

(3) Utiliser la correspondance de modèles étendue

grep -E '219|216' data.doc

(4) ...

Cela doit être appliqué et résumé en permanence dans la pratique, et maîtriser les expressions régulières avec compétence.

5, utilisez le nom de classe

pour utiliser le nom de classe pour la correspondance de modèles internationaux :

[[:upper:]] [A-Z]

[[ :lower:]] [a-z]

[[:digit:]] [0-9]

[[:alnum:]] [0-9a-zA-Z]

[[:space:]] Espace ou tabulation

[[:alpha:]] [a-zA-Z]

(1) Utiliser

grep '5[[:upper:]][[:upper:]]' data.doc #Lignes de requête commençant par 5 et se terminant par deux lettres majuscules

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn