【Linux】grep 命令详解

简介: 【Linux】grep 命令详解

1.简介

grep 命令是一种命令行实用程序,用于在纯文本数据集中搜索与正则表达式匹配的行。在 /bin 目录下可以找到 grep 命令的可执行程序,可以通过 find 命令查找。

grep 命令的全称是 "Globally search for a regular expression and print matching lines",从中可以看出其几个特点:1)全文件搜索,因为在 Unix、Unix-like 系统中为了要彻底搜索一个文件,有的用户在要搜索的字符串前加上前缀 global;2)支持正则表达式匹配;3)按行匹配;4)打印匹配的信息。

此外,还有 grep 的变体程序 egrep、fgrep、rgrep,它们的作用分别与 grep -E、grep -F、grep -r 相同

2.常用命令

  • 语法

    • grep [options] pattern [files]grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
    • pattern - 表示要查找的字符串或正则表达式。
    • files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
  • 常用选项:

    • -i:忽略大小写进行匹配。
    • -v:反向查找,只打印不匹配的行。
    • -n:显示匹配行的行号。
    • -r:递归查找子目录中的文件。
    • -l:只打印匹配的文件名。
    • -c:只打印匹配的行数。
  • 更多参数说明:

    • -a--text:不要忽略二进制的数据。
    • -A<显示行数>--after-context=<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。
    • -b--byte-offset:在显示符合样式的那一行之前,标示出该行第一个字符的编号。
    • -B<显示行数>--before-context=<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
    • -c--count:计算符合样式的列数。
    • -C<显示行数>--context=<显示行数>-<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
    • -d <动作>--directories=<动作>:当指定要查找的是目录而非文件时,必须使用这项参数,否则 grep 指令将回报信息并停止动作。
    • -e<范本样式>--regexp=<范本样式>:指定字符串做为查找文件内容的样式。
    • -E--extended-regexp:将样式为延伸的正则表达式来使用。
    • -f<规则文件>--file=<规则文件>:指定规则文件,其内容含有一个或多个规则样式,让 grep 查找符合规则条件的文件内容,格式为每行一个规则样式。
    • -F--fixed-regexp:将样式视为固定字符串的列表。
    • -G--basic-regexp:将样式视为普通的表示法来使用。
    • -h--no-filename:在显示符合样式的那一行之前,不标示该行所属的文件名称。
    • -H--with-filename:在显示符合样式的那一行之前,表示该行所属的文件名称。
    • -i--ignore-case:忽略字符大小写的差别。
    • -l--file-with-matches:列出文件内容符合指定的样式的文件名称。
    • -L--files-without-match:列出文件内容不符合指定的样式的文件名称。
    • -n--line-number:在显示符合样式的那一行之前,标示出该行的列数编号。
    • -o--only-matching:只显示匹配 pattern 部分。
    • -q--quiet--silent:不显示任何信息。
    • -r--recursive:此参数的效果和指定 `-d recurse的参数相同。
    • -s--no-messages:不显示错误信息。
    • -v--invert-match:显示不包含匹配文本的所有行。
    • -V--version:显示版本信息。
    • -w--word-regexp:只显示全字符合的列。
    • -x--line-regexp:只显示全列符合的列。
    • -y:此参数的效果和指定 -i 参数相同。

注意:上述参数中方括号 [ ] 中的内容表示可选项,尖括号 < > 中的内容表示需要替换为实际的值或选项。例如 -A<显示行数> 表示需要将 <显示行数> 替换为具体的数字,如 -A3 表示显示符合范本样式的那一列之外并显示该行之后的3行内容。

3.正则表达式

表达式 描述
^ 锚定行的开始,如:’^grep’匹配所有以grep开头的行。
$ | 锚定行的结束,如:’grep$’匹配所有以grep结尾的行。
. 匹配一个非换行符的字符,如:’gr.p’匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符,如:’*grep’匹配所有一个或多个空格后紧跟grep的行。
.* 一起用代表任意字符。
[] 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
(..) 标记匹配字符,如’(love)‘,love被标记为1。
\< 锚定单词的开始,如:’\<grep’匹配包含以grep开头的单词的行。
> 锚定单词的结束,如’grep>‘匹配包含以grep结尾的单词的行。
x{m} 重复字符x,m次,如:’0{5}‘匹配包含5个o的行。
x{m,} 重复字符x,至少m次,如:’o{5,}‘匹配至少有5个o的行。
x{m,n} 重复字符x,至少m次,不多于n次,如:’o{5,10}‘匹配5—10个o的行。
\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:’G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。
\W \w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b 单词锁定符,如: ‘\bgrep\b’只匹配grep。
目录
相关文章
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
413 1
二、Linux文本处理与文件操作核心命令
|
2月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
289 137
|
2月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
665 57
|
5月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
493 143
linux命令—tree
|
1月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
372 2
|
2月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
260 0
Linux内存问题排查命令详解
|
2月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
260 16
|
4月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
808 13
|
5月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
927 21
|
5月前
|
监控 Linux
Linux系统中使用df命令详解磁盘使用情况。
`df`命令是Linux系统管理员和用户监控和管理磁盘空间使用的重要工具。掌握它的基本使用方法和选项可以帮助在必要时分析和解决空间相关问题。简洁但功能丰富,`df`命令确保了用户可以快速有效地识别和管理文件系统的空间使用情况。
417 13
下一篇
oss云网关配置