15个救命grep命令,运维人必存!

15个救命grep命令,运维人必存!

15个救命grep命令,运维人必存!

开源日记 2025年07月30日 21:02 

以下文章来源于开源运维 ,作者开源运维

开源运维.

分享优质GitHub开源项目的安装教程。


grep 是 Linux 系统中处理文本文件的强大工具。无论是系统管理员、开发人员还是日常用户,都常用它来搜索和过滤文件中的文本。以下用 15 个实际例子展示如何高效使用 grep 命令,并对输入输出进行演示。

1.在文件中查找指定字符串

在文件 sample.log 中查找包含字符串 error 的所有行:

grep "error" sample.log

输出:

2023-10-13 09:32:22 - Error: Cannot connect to database
2023-10-13 10:02:45 - Error: Missing configuration file

2.忽略大小写进行搜索

使用 -i 参数,可以忽略大小写,匹配 error 和 ERROR

grep -i "error" sample.log

输出:

2023-10-13 09:32:22 - Error: Cannot connect to database
2023-10-13 10:02:45 - ERROR: Disk space is full
2023-10-13 10:02:45 - Error: Missing configuration file

3.递归搜索目录中的文件

在目录 /path/to/logs 中查找所有文件中包含 function 的行:

grep -r "function" /path/to/logs

输出:

/path/to/logs/file1.log:35:Found function main()
/path/to/logs/file2.log:12:function add(a, b)

4.统计匹配的次数

统计字符串 total 在文件中出现的次数:

grep -c "total" sample.log

输出:

3

5.只显示包含匹配内容的文件名

列出所有包含 config 的文件名:

grep -l "config" *.txt

输出:

file1.txt
file2.txt

6.查找时显示具体行号

显示包含 main 的行及所在行号:

grep -n "main" app.py

输出:

10:def main():
65:# Call main function

7.反向查找

使用 -v 选项显示不包含 # 的行:

grep -v "#" /etc/nginx/nginx.conf

输出:

server {
    listen 80;
    server_name example.com;
}

8.精确匹配一个单词

用 -w 参数只匹配完整单词而不是部分字符串:

grep -w "error" sample.log

输出:

2023-10-13 09:32:22 - Error: Cannot connect to database
2023-10-13 10:02:45 - Error: Missing configuration file

9.显示匹配字符串的上下文

  • -A:显示匹配行后面几行
  • -B:显示匹配行前面几行
  • -C:显示匹配行前后几行

以下命令分别演示:

grep -A 2 "error" sample.log # 匹配行和后两行

输出:

Error: Cannot connect to database
Recovery process started
Recovery process completed
grep -B 1 "error" sample.log # 匹配行和前一行

输出:

Initialization completed
Error: Missing configuration file
grep -C 1 "error" sample.log # 匹配行上下各一行

输出:

Initialization completed
Error: Missing configuration file
Restarting service

10.只显示匹配的内容

用 -o 参数仅显示匹配内容,而不是整行:

grep -o "ERROR.*" sample.log

输出:

ERROR: Disk space is full
Error: Missing configuration file

11.在压缩文件中查找字符串

在 .gz 压缩文件内搜索 critical

zgrep "critical" log.gz

输出:

[CRITICAL] System failure at node-1

12.使用正则表达式匹配

用 -E 或等价的 egrep,匹配 error 或 fail 开头的行:

grep -E "^(error|fail)" sample.log

输出:

error: Configuration missing
fail: Could not start service

13.递归搜索时排除特定文件类型

在递归搜索中,排除 .log 文件:

grep -r --exclude="*.log" "DEBUG" /path/to/logs

输出:

/path/to/logs/script.py:DEBUG: Starting process
/path/to/logs/setup.py:DEBUG: Initializing configurations

14.按固定字符串匹配

用 grep -F 仅匹配固定字符串,忽略正则表达式:

grep -F ".*" sample.log

输出:(假定 .* 是文件中存在的一段固定字符)

This is a test.*
error: Configuration missing.*

15.结合管道符过滤复杂结果

通过管道,结合其他 Linux 命令处理网络信息:

ifconfig | grep -A 2 "eth0"

输出:

eth0: flags=4163<UP,BROADCAST> mtu 1500
    inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255

掌握 grep 的灵活用法,可以高效完成多种文本搜索任务。无论是普通字符串查找、复杂的正则表达式匹配,还是结合其他命令进行管道处理,grep 都提供了强大的功能支持。

开源运维分享优质GitHub开源项目的安装教程。290篇原创内容公众号



本站所有资源都是由网友投搞发布,或转载各大下载站,请自行检测软件的完整性!本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!如有侵权请联系我们删除下架,联系方式:273171821@qq.com
0
分享到: