Linux 文本搜索入门:grep 与 sed 怎么用

举报
yd_254412059 发表于 2026/11/03 23:39:27 2026/11/03
【摘要】 新手向入门:用 grep 在日志和文件里快速找关键行,用 sed 安全地替换、删除和按行取内容,并通过先定位后处理的组合方法排查日志与改配置。

在 Linux 服务器上排查问题时,最常面对的就是文本:日志文件、配置文件、命令输出。学会 grep 与 sed,就等于有了一把“先找出来、再改掉”的工具。本文面向零基础读者,只讲最常用、最安全的用法,全部命令都可以在自己的练习目录里先试一遍。

一、grep:负责“找”
grep 的基本格式是:grep [选项] 要找的内容 文件名。例如 grep "ERROR" app.log,会把 app.log 里包含 ERROR 的行全部打印出来。要注意,默认区分大小写;如果不确定大小写,就加 -i,例如 grep -i "error" app.log。
想知道出现在哪一行,加 -n;想知道出现多少次,加 -c;想反向排除,加 -v,例如 grep -v "DEBUG" app.log 可以过滤掉调试信息,让真正需要看的行更突出。想在整个目录里找,就加 -r,例如 grep -r "timeout" ./logs/。
新手常见的误区是把 grep 当成只能找固定词。其实它支持正则表达式,例如 grep -E "ERROR|WARN" app.log 可以同时找两种级别;点号、星号等符号有特殊含义,找字面符号时要转义或用 -F,例如 grep -F "192.168.1.1" app.log。记住:先用小范围文件练习,再去翻大日志。

二、sed:负责“改、删、取”
sed 的名字来自流编辑器,它按行处理文本,默认并不直接改文件,这一点对新手非常友好。最常用的是替换:sed 's/旧内容/新内容/' file.txt 只替换每行第一次出现;末尾加 g 才是全部替换,例如 sed 's/debug/info/g' app.log。
如果确实要改文件,一定要先备份再用 -i,例如先执行 cp config.txt config.txt.bak,然后执行 sed -i 's/8080/9090/g' config.txt。没有备份就直接用 -i,是新手最容易后悔的操作。
sed 还能按行号取内容:sed -n '1,20p' app.log 只看前 20 行;sed -n '10p' app.log 只看第 10 行。删除某类行也很方便:sed '/DEBUG/d' app.log 会删掉包含 DEBUG 的行,但同样只是输出结果,不改原文件。
分隔符不一定非用斜杠。当内容本身包含斜杠时,换成其他符号更清楚,例如 sed 's|/old/path|/new/path|g' file.txt。

三、两者配合:先定位,再处理
真实排查往往是组合使用。先用 grep 缩小范围,再用 sed 做整理,例如 grep "ERROR" app.log | sed 's/DEBUG//g',或者 grep -i "timeout" app.log | sed -n '1,50p'。管道符把前一个命令的输出交给下一个命令,这样不用生成中间文件。
再举一个配置场景:先用 grep -n "port" config.txt 找到端口所在行号,再用 sed -n '行号p' 查看上下文,确认无误后才做替换。这样的顺序比直接全局替换安全得多。

四、新手避坑清单
第一,命令里的引号不要乱省,单引号能防止 Shell 提前解释特殊符号。第二,替换前先不加 -i 看一遍输出,确认效果再落盘。第三,正则符号要按需转义,拿不准就先用 -F 做字面匹配。第四,不要在生产日志或重要配置上直接练习,先复制一份到练习目录。第五,命令没有输出不一定是错了,可能是关键词、大小写、路径或文件权限不对,先用 ls 和 head 检查文件是否存在、有没有内容。

五、动手小练习
在练习目录新建一个 app.log,写几行包含 INFO、WARN、ERROR 的日志,然后依次做:用 grep 找出 ERROR 行并显示行号;用 grep -v 过滤 INFO;用 sed 把 WARN 换成 WARNING 但不改原文件;最后用 sed -n 输出前 3 行。能把这四步顺利做完,日常看日志就基本够用了。
总结一句话:grep 帮你“找到关键行”,sed 帮你“改掉、删掉或取出一部分”。先找后改、先看后写,养成这个习惯,文本处理就会从“怕出错”变成“敢动手”。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。