Maison  >  Article  >  Tutoriel système  >  Analyse de cas pratique et analyse de cas de référence de la commande grep dans le système Linux

Analyse de cas pratique et analyse de cas de référence de la commande grep dans le système Linux

WBOY
WBOYoriginal
2024-06-02 19:04:13585parcourir

Répertoire 1. Introduction à la commande Grep 2. Format de phrase et options communes 3. Cas de référence 3.1 Rechercher des fichiers commençant par root dans le fichier 3.2 Rechercher la racine qui apparaît dans le fichier 3.3 Rechercher non seulement les lignes autres que les lignes correspondantes 3.4 Pièces correspondantes Utilisation affichage couleur 3.5 Afficher uniquement les endroits correspondants dans le fichier 3.6 Afficher les lignes contenant la chaîne correspondante et afficher le nombre de lignes 3.7 Fichier de statistiques ou résumé textuel du nombre de lignes contenant la chaîne correspondante

1. Introduction à la commande grep 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 copier les lignes correspondantes.

Le nom complet de grep est GlobalRegularExpressionPrint, qui représente la version globale de l'expression régulière. Ses autorisations d'utilisation sont destinées à tous les utilisateurs.

Annotation chinoise :

grep['grep]Commande de ligne cible de recherche·global[?glo?bl]beauté régulière globale et filamenteuse[?r?ɡj?l?]armée régulière, régulière(n)expression beauté[? ?n]expression, expression, expression, teint, mentalité

Exemple : Cela devrait vous inciter à vous mouiller, si vous pardonnez l'expression

Linux prend en charge trois méthodes de commandes grep : grep, egrep, grep-E

2. Format de phrase et options courantes Selon la convention, nous vérifions toujours l'aide en premier et utilisons grep --help

.

[root@mufeng test]# grep --help
用法: grep [选项]... PATTERN [FILE]...
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i 'hello world' menu.h main.c
正则表达式选择与解释:
-E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
-F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
-G, --basic-regexpPATTERN 是一个基本正则表达式(缩写为 BRE)
-P, --perl-regexp PATTERN 是一个 Perl 正则表达式
-e, --regexp=PATTERN用 PATTERN 来进行匹配操作
-f, --file=FILE 从 FILE 中取得 PATTERN
-i, --ignore-case 忽略大小写
-w, --word-regexp 强制 PATTERN 仅完全匹配字词
-x, --line-regexp 强制 PATTERN 仅完全匹配一行
-z, --null-data 一个 0 字节的数据行,但不是空行
Miscellaneous:
-s, --no-messages suppress error messages
-v, --invert-matchselect non-matching lines
-V, --version display version information and exit
--helpdisplay this help text and exit
输出控制:
-m, --max-count=NUM NUM 次匹配后停止
-b, --byte-offset 输出的同时打印字节偏移
-n, --line-number 输出的同时打印行号
--line-buffered 每行输出清空
-H, --with-filename 为每一匹配项打印文件名
-h, --no-filename 输出时不显示文件名前缀
--label=LABEL 将LABEL 作为标准输入文件名前缀
-o, --only-matching show only the part of a line matching PATTERN
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE;
TYPE is 'binary', 'text', or 'without-match'
-a, --textequivalent to --binary-files=text
-Iequivalent to --binary-files=without-match
-d, --directories=ACTIONhow to handle directories;
ACTION is 'read', 'recurse', or 'skip'
-D, --devices=ACTIONhow to handle devices, FIFOs and sockets;
ACTION is 'read' or 'skip'
-r, --recursive like --directories=recurse
-R, --dereference-recursive
likewise, but follow all symlinks
--include=FILE_PATTERN
search only files that match FILE_PATTERN
--exclude=FILE_PATTERN
skip files and directories matching FILE_PATTERN
--exclude-from=FILE skip files matching any file pattern from FILE
--exclude-dir=PATTERN directories that match PATTERN will be skipped.
-L, --files-without-match print only names of FILEs containing no match
-l, --files-with-matchesprint only names of FILEs containing matches
-c, --count print only a count of matching lines per FILE
-T, --initial-tab make tabs line up (if needed)
-Z, --nullprint 0 byte after FILE name
文件控制:
-B, --before-context=NUM打印以文本起始的NUM 行
-A, --after-context=NUM 打印以文本结尾的NUM 行
-C, --context=NUM 打印输出文本NUM 行
-NUMsame as --context=NUM
--group-separator=SEP use SEP as a group separator
--no-group-separatoruse empty string as a group separator
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binarydo not strip CR characters at EOL (MSDOS/Windows)
-u, --unix-byte-offsets report offsets as if CRs were not there
(MSDOS/Windows)

Afin d'être plus intuitif, nous affichons les paramètres couramment utilisés dans un tableau :

Description du paramètre -i ignorer la casse -E activer les expressions régulières étendues POSTIX -P activer les expressions régulières Perl -o afficher uniquement le contenu correspondant de l'expression régulière -w faire correspondre des mots entiers -v annuler, c'est-à-dire sans correspondance -n sortie Après la ligne le nombre a des paramètres spécifiques, regardons le cas réel :

3. Cas de référence

3.1 Rechercher des fichiers commençant par root Vous pouvez utiliser ^root pour afficher les fichiers commençant par root dans /etc/passwd.

[root@mufenggrow ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

3.2 Pour rechercher une certaine phrase dans la racine qui apparaît dans le fichier, nous pouvons suivre directement le nom du mot devant grep :

Cas 1 : Recherchez l'utilisateur root dans /etc/passwd

linux cat grep 匹配_grep正则表达式匹配数字_catgrep

[root@mufenggrow ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow ~]# 

Cas 2 : Rechercher la racine à partir de plusieurs fichiers

root@mufenggrow ~]# echo root >> a.txt
[root@mufenggrow ~]# echo root >> b.txt
[root@mufenggrow ~]# grep "root" /etc/passwda.txt b.txt
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
a.txt:root
b.txt:root
[root@mufenggrow ~]# 

3.3 Recherchez des lignes autres que les lignes correspondantes. Utilisez ici le paramètre -v, comme la négation

.

Cas 1 : Comptez le nombre de lignes dans un fichier et n'incluez pas les lignes vides

L'expression de la ligne vide : ^$

[root@mufenggrow ~]# cp /etc/passwd ./
## 源文件一共35行
[root@mufenggrow ~]# cat /etc/passwd |wc -l
35
## 追加空行进去
[root@mufenggrow ~]# echo "" >> /etc/passwd
[root@mufenggrow ~]# cat /etc/passwd |wc -l
36
## 去掉空行测试
[root@mufenggrow ~]# grep -v ^$/etc/passwd |wc -l
35
[root@mufenggrow ~]# 

linux cat grep 匹配_grep正则表达式匹配数字_catgrep

Parfois, nous modifions le fichier de configuration et le fichier contient beaucoup de #. Si nous voulons supprimer le # pour afficher le contenu, nous pouvons utiliser

.

[root@mufenggrow ~]# grep -v ^# passwd |wc -l
35

3.4匹配的部份使用颜色显示这儿可以使用--color=auto,我们来查看一下包含root的行linux cat grep 匹配linux cat grep 匹配,并高亮显示要查找的root。

[root@mufenggrow ~]# grep root /etc/passwd--color=auto
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow ~]# 

这样显示,疗效不显著,我们看右图:

catgrep_grep正则表达式匹配数字_linux cat grep 匹配

catgrep_linux cat grep 匹配_grep正则表达式匹配数字

以看见,所有的root都是蓝色表示的。

3.5只输出文件中匹配到的地方例如我们要查询root,但我不想显示包含root的行RAR FOR LINUX,而是只显示要查询的内容:

此时须要使用-o参数,代码如下

[root@mufenggrow ~]# grep -o root /etc/passwd
root
root
root
root

要注意,假若一行中有10个root,这儿就显示10个,而不是只显示一个,所以3.4的案例中我们查询的时侯红帽子linux下载,包含root的有两行,但有4个root,在3.5案例中,显示了所有的root。

3.6输出包含匹配字符串的行,并显示所在的行数此处可以使用-n参数,-n会在一行的后面加上行号:例如“4:”

我们来看下代码示例:

[root@mufenggrow ~]# grep -n "root" passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

我们要统计一个文件一共有多少行,也可以使用-n参数

root@mufenggrow ~]# grep -n "" passwd |awk -F : '{print $1}' |tail -n 1
35

3.7统计文件或则文本中包含匹配字符串的行数此时可以用-c参数:

[root@mufenggrow ~]# grep -c "root" passwd
2

包含root的有两行,假如我们要统计文本的行数:

[root@mufenggrow ~]# grep -c "$" passwd
35

相当于查找$的行数,可以见到一共有35个$符号,也就是35行。

总结grep命令在日常工作中,应用的比较广泛,一定要认真学习,记熟记牢常用参数。

到此这篇关于linux中grep命令使用实战解读的文章就介绍到这了,更多相关linuxgrep命令内容请搜索曾经的文章或继续浏览下边的相关文章希望你们之后多多支持!

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