当前位置:首页>Linux>告别低效!程序员必学的 10 个 Linux 文本处理神技

告别低效!程序员必学的 10 个 Linux 文本处理神技

  • 2026-09-10 12:41:20
告别低效!程序员必学的 10 个 Linux 文本处理神技

引言:

你是否还在对着成堆的日志文件(Log)发愁?

是否还在用肉眼一行行扫描错误信息?

是否觉得 grep只能用来做个简单搜索?

今天,我们就来聊聊 Linux 中最强大、但也最容易让人“迷路”的命令家族——文本处理三剑客之一:grep。

掌握下面这几个技巧,让你在海量文本中精准狙击目标信息,效率提升 10 倍!


一、 基础篇:你真的会用 grep 吗?

很多人只知道 grep "error" app.log,其实加上几个参数,体验完全不同。

1️⃣ 忽略大小写:-i

日志里的错误千奇百怪:Error、ERROR、error。一个个试太麻烦了。

grep -i "error" app.log

✅ 作用:忽略大小写差异,一网打尽所有变种。


2️⃣ 显示行号:-n

找到了错误,但不知道在哪一行?-n帮你定位。

grep -n "NullPointerException" app.log

输出示例:

105: Caused by: java.lang.NullPointerException

✅ 作用:直接告诉你错误出现在第几行,方便上下文查看。


3️⃣ 只显示文件名:-l

如果你要找的是“哪个文件”包含了某个关键词(比如想找出所有包含 “timeout” 的配置文件),-l是神器。

grep -l "timeout" *.conf

✅ 作用:只输出文件名,不输出具体匹配的行内容,结果干净利落。

📌 小测验:

grep -il "keyword" *.log是什么意思?

👉 答案:忽略大小写,在所有 .log文件中查找,并只显示包含该关键词的文件名。


二、 进阶篇:组合拳才是王道

4️⃣ 递归搜索:-r

想在一个目录下所有子目录的所有文件里找东西?

grep -rn "database connection failed" /var/log/

✅ 作用:递归搜索目录,-r+ -n是排查线上问题的黄金搭档。


5️⃣ 反向查找:-v

有时候我们关心的是“没有成功”的请求。

grep -v "200 OK" access.log

✅ 作用:排除所有包含 “200 OK” 的行,剩下的全是异常或非成功请求。


6️⃣ 统计次数:-c

想知道某个错误出现了多少次?

grep -c "404 Not Found" access.log

✅ 作用:输出匹配的行数(Count),快速了解问题规模。


三、 高手篇:精准匹配与上下文

7️⃣ 全词匹配:-w

如果你搜 error,结果把 error_message、errors都带出来了,怎么办?

grep -w "error" app.log

✅ 作用:只匹配完整的单词,避免“误伤”。


8️⃣ 查看匹配行的上下文:-C / -B / -A

这是排查问题的必杀技!很多时候光看报错那一行不够,需要看前后几行。

# 显示匹配行及其前后各 5 行grep -C 5 "OutOfMemoryError" app.log# 只看匹配行的前 3 行 (-Before)grep -B 3 "shutdown" app.log# 只看匹配行的后 3 行 (-After)grep -A 3 "startup completed" app.log

✅ 作用:还原事故现场,看清错误发生前的堆栈或日志流。


四、 实战场景演练

🎯 场景一:紧急排查服务器 500 错误

# 在 nginx 日志中,找出所有 500 错误,并显示行号grep -rn " 500 " /usr/local/nginx/logs/access.log

🎯 场景二:清理临时文件

# 找出所有包含 'tmp' 但不是 '.tmp' 后缀的文件(排除法)ls | grep "tmp" | grep -v "\.tmp$"

🎯 场景三:代码审计

# 在整个项目中查找使用了 'System.out.println' 的 Java 文件grep -rl "System.out.println" src/

五、 总结:一张表记住所有参数

参数

全称

作用

-i

ignore case

忽略大小写

-n

number

显示行号

-l

list files

只显示文件名

-r

recursive

递归搜索

-v

invert

反向选择(不包含)

-c

count

统计行数

-w

word

全词匹配

-C

context

显示上下文


写在最后:

grep的强大之处在于参数的自由组合。

熟练之后,你可以像搭积木一样,用一行命令完成复杂的过滤逻辑。

💡 今日作业:

在你的服务器上,试着用 grep -rn "关键字" .搜索一个目录,感受一下效率的提升!

最新文章

随机文章