【命令操作】Linux三剑客之grep详解|统信|麒麟|方德

鹏大搞运维 2024-11-04 12:38:52

原文链接:

Hello,大家好啊!今天带来一篇关于Linux三剑客之grep命令详解的文章。在日常的Linux操作中,grep是一个非常强大的文本搜索工具,它可以帮助我们快速定位文件中包含特定关键字的行,不论是在系统日志排查、配置文件搜索,还是数据处理分析中,都能起到重要作用。

本文将详细介绍grep命令的使用方法及其实际应用场景,帮助大家快速掌握这款工具的精髓。欢迎大家分享转发,点个关注和在看吧!

什么是grep命令?

grep 是Linux中用于文本搜索的命令行工具,能够根据指定的模式(pattern)搜索文件中的内容,并显示符合条件的行。grep命令支持正则表达式,能灵活、高效地搜索复杂的文本模式。

1.基本语法

grep [选项] '模式' 文件名

例如,在pdsyw.txt文件中查找包含“pdsyw”的行:

pdsyw@pdsyw-PC:~/Desktop$ grep 'pdsyw' pdsyw.txt

2.常用选项

-i:忽略大小写

pdsyw@pdsyw-PC:~/Desktop$ grep -i 'pdsyw' pdsyw.txt

搜索时忽略大小写,例如可以匹配pdsyw、PDSYW等。

-v:反向匹配

pdsyw@pdsyw-PC:~/Desktop$ grep -v 'pdsyw' pdsyw.txt

显示不包含“pdsyw”的行。

-c:只输出匹配的行数

pdsyw@pdsyw-PC:~/Desktop$ grep -c 'pdsyw' pdsyw.txt

输出文件中包含“pdsyw”的行数,而不是具体的内容。

-l:仅显示包含匹配内容的文件名

pdsyw@pdsyw-PC:~/Desktop$ grep -l 'pdsyw' *.txt

在当前目录的所有.txt文件中查找包含“pdsyw”的文件名。

-L:仅显示不包含匹配内容的文件名

pdsyw@pdsyw-PC:~/Desktop$ grep -L 'pdsyw' *.txt

显示当前目录中不包含“pdsyw”的.txt文件。

-n:显示匹配行及其行号

pdsyw@pdsyw-PC:~/Desktop$ grep -n 'pdsyw' pdsyw.txt

显示包含“pdsyw”的行,并在前面显示行号。

-H:显示文件名(即使只有一个文件)

pdsyw@pdsyw-PC:~/Desktop$ grep -H 'pdsyw' pdsyw.txt

在输出匹配内容的同时,显示文件名。

-r 或 -R:递归搜索目录

pdsyw@pdsyw-PC:~/Desktop$ grep -r 'pdsyw' pdsyw

在指定目录及其子目录中的所有文件中查找包含“pdsyw”的行。

-w:匹配整个单词

pdsyw@pdsyw-PC:~/Desktop$ grep -w 'pdsyw' pdsyw.txt

匹配完整的单词pdsyw,不会匹配pdsywworld或pdsyw123等。

-x:匹配整行

pdsyw@pdsyw-PC:~/Desktop$ grep -x 'pdsyw' pdsyw.txt

只匹配内容完全为“pdsyw”的行。

-A NUM:匹配行及后NUM行

pdsyw@pdsyw-PC:~/Desktop$ grep -A 2 'pdsyw' pdsyw.txt

显示匹配“pdsyw”的行及其后的2行内容。

-B NUM:匹配行及前NUM行

pdsyw@pdsyw-PC:~/Desktop$ grep -B 2 'pdsyw' pdsyw.txt

显示匹配“pdsyw”的行及其前的2行内容。

-C NUM:匹配行及前后NUM行

pdsyw@pdsyw-PC:~/Desktop$ grep -C 2 'pdsyw' pdsyw.txt

显示匹配“pdsyw”的行以及上下2行的内容。

--color:高亮显示匹配内容

pdsyw@pdsyw-PC:~/Desktop$ grep --color 'pdsyw' pdsyw.txt

在输出中高亮显示匹配的字符串。

3.正则表达式匹配

grep支持两种正则表达式:基本正则表达式(默认)和扩展正则表达式(-E选项)。

基本正则表达式(BRE)

.:匹配任意单个字符

pdsyw@pdsyw-PC:~/Desktop$ grep 'h.llo' pdsyw.txt

匹配如pdsyw、hallo等。

^:匹配行首

pdsyw@pdsyw-PC:~/Desktop$ grep '^pdsyw' pdsyw.txt

匹配以“pdsyw”开头的行。

$:匹配行尾

pdsyw@pdsyw-PC:~/Desktop$ grep 'pdsyw$' pdsyw.txt

匹配以“pdsyw”结尾的行。

*:匹配前一个字符的零次或多次

pdsyw@pdsyw-PC:~/Desktop$ grep 'he*llo' pdsyw.txt

匹配如hllo、heeeello等。

4.扩展正则表达式(ERE)

使用-E选项(或使用egrep命令)可以启用扩展正则表达式。

?:匹配前一个字符的零次或一次

pdsyw@pdsyw-PC:~/Desktop$ grep -E 'he?llo' pdsyw.txt

匹配如hello和hllo。

+:匹配前一个字符的一次或多次

pdsyw@pdsyw-PC:~/Desktop$ grep -E 'he+llo' pdsyw.txt

匹配如hello、heeello等。

{N}:匹配前一个字符的N次

pdsyw@pdsyw-PC:~/Desktop$ grep -E 'he{2}llo' pdsyw.txt

匹配如heello。

|:逻辑或

pdsyw@pdsyw-PC:~/Desktop$ grep -E 'pdsyw|hello' pdsyw.txt

匹配“pdsyw”或“hello”。

():用于分组

pdsyw@pdsyw-PC:~/Desktop$ grep -E '(pdsyw){2}' pdsyw.txt

匹配如pdsywpdsyw。

排除特定文件类型(如跳过.desktop文件):

pdsyw@pdsyw-PC:~/Desktop$ grep -r --exclude='*.desktop' 'pdsyw' /home/pdsyw/Desktop

查找并显示指定字符串所在行的前后内容:

pdsyw@pdsyw-PC:~/Desktop$ grep -A 2 -B 2 'pdsyw' pdsyw.txt

5.常见用法示例

查找文件中的所有IP地址:

pdsyw@pdsyw-PC:~/Desktop$ grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' pdsyw.txt

使用正则表达式提取文件中的IP地址。

查找含有“error”或“fail”的日志文件:

root@pdsyw-PC:~# grep -iE 'error|fail' /var/log/syslog | head -1

搜索包含特定词的多种文件类型

pdsyw@pdsyw-PC:~/Desktop$ grep -r --include=\*.{txt,desktop} '360' /home/pdsyw/Desktop/

通过本文的介绍,大家应该掌握了grep命令的基本使用方法和各种应用场景。grep作为Linux系统的三剑客之一,其强大的文本搜索功能为我们提供了高效的文本筛选工具。如果您觉得这篇文章对您有帮助,别忘了分享、转发,并记得点个关注和在看!感谢大家的阅读,我们下次再见!

0 阅读:0

鹏大搞运维

简介:感谢大家的关注