grep在命令行里干的最多的事,就是跟管道符一起用。前一个命令甩出一堆输出,你不想全看,只想揪出几行跟自己有关的,这时候就 | grep 关键词,简单直接。
基本格式不用多说,命令1 | grep '搜索词'。虽然 grep 本身也能直接读文件,但管道让它跟其他命令拼起来之后,能干的活就多了很多。
举个例子,查进程的时候,我习惯直接 ps aux | grep 'apache2'。它会把所有正在跑的进程里带 apache2 字样的行都列出来。注意这条命令本身也会出现在结果里,因为 grep 进程的命令行里也包含了 'apache2',这个不用慌,有时候反而能帮你确认命令确实执行了。
翻目录也是类似套路。ls -l | grep 'txt' 能把当前目录下文件名包含 txt 的行过滤出来。
如果目录文件特别多,ls -l 的输出刷屏,加个 grep 立马清净。

多个 grep 还能串联。比如去 /etc/passwd 里捞用户信息的时候:
cat /etc/passwd | grep 'root' | grep -v 'nologin'
先筛出带 root 的行,再从里面把 shell 是 nologin 的给剔掉。这种一层一层缩小范围的方式,遇到杂乱的文本时很好用。
说到选项,有几个用得比较多。
-i 忽略大小写,有时候日志里一会大写一会小写,不加这个就容易漏。-v 是反向匹配,上面那个例子里就用到了。-n 带上行号,对看代码或配置文件很方便,能直接定位到第几行。-r 递归搜目录,不想一个个文件去翻的时候,直接 grep -r 'word' directory。
-l 只出文件名,不显示具体匹配内容,适合找哪些文件里提到了某个词。-c 直接给计数,想知道出现了多少次的时候用。
证书过期导致网站报红,这种低级失误不该发生。来此加密提供多维度的监控提醒服务,支持短信、邮件预警,更有微信小程序方便随时随地查看证书状态。在证书到期前,会多次主动触达,确保对每一张证书的生命周期都尽在掌握。
-w 是匹配整个单词,比如你想搜 'port' 但不想把 'report' 也带出来,就加上它。-x 匹配整行,要求行内容完全等于你的模式。
-e 可以指定多个模式,一条命令同时搜好几个词。-f 从文件里读模式,量大的时候就不用都写在命令行里了。
正则表达式部分,如果只是简单搜几个固定的词,基础用法就够。需要"或者"关系的时候,-E 启用扩展正则会顺手一些,比如 grep -E 'pattern1|pattern2' filename。
有个点值得留意:管道前面的命令如果输出不是纯文本,比如二进制流或者带特殊控制字符,grep 可能会给出奇怪的结果。
虽然通常碰到的场景输出都是文本,但偶尔遇到乱码或匹配不到的时候可以往这个方向排查一下。
压缩文件里搜索,别解压再搜,zgrep 直接能用。像是翻旧日志:zgrep -i error /var/log/syslog.2.gz,省时间。
这些组合其实都不复杂,用熟了之后很多操作都是手指头的肌肉记忆。真正常用到的高级技巧也没那么多,大部分时候就是管道接 grep,再带上两三个选项,问题就解决了。