macos终端中grep搜索需“指定模式+指定目标”,基础为grep "关键词" 文件名,引号防拆解,-i忽略大小写,-n显示行号,-l仅显文件名,-w整词匹配,-x整行匹配,-r递归搜索,配合管道可动态过滤。
在 macos 终端中用 grep 搜索关键字,核心就是“指定模式 + 指定目标”,操作简单但细节决定效果。
基础用法:搜单个文件里的关键词
最常用形式:grep "关键词" 文件名
- 关键词带空格或特殊字符(如
user name、error:),务必用英文引号包裹,避免被 shell 拆解 - 默认区分大小写。想忽略大小写,加
-i选项,例如:grep -i "error" system.log - 只显示匹配行的行号,加
-n;只显示匹配到的文件名(不显示内容),加-l
精准匹配:避免误中副词或子串
比如搜单词 cat,但不想匹配到 category 或 scat:
- 用
-w选项实现整词匹配:grep -w "cat" notes.txt - 若需整行完全一致,用
-x:grep -x "DEBUG" config.conf(只匹配单独一行就是 DEBUG 的情况)
搜多个文件或整个目录
搜索当前目录下所有 .txt 文件:grep "TODO" *.txt
递归搜索某个文件夹(含子目录):grep -r "api_key" ~/Projects/
- macOS 默认是 BSD grep,
-r可用;如遇权限提示,可在前面加sudo(慎用) - 想排除二进制文件干扰,加
--binary-files=without-match;只想搜特定后缀,可用--include="*.md"(GNU 扩展,macOS 需安装brew install grep后用ggrep)
结合管道动态搜索
把其他命令的输出当“文本流”来搜,非常实用:
- 查进程里是否运行着 Chrome:
ps aux | grep -i chrome - 过滤日志中的错误行:
tail -100 system.log | grep -i "failed\|denied" - 注意:
grep自身也会出现在ps结果里,可用ps aux | grep chrome | grep -v grep排除自身行











