..
grep命令的使用
介绍
grep 根据 Wiki 的描述,其名字源于一句话的缩写,大意是它是一个正则表达式的文本搜索工具。这个实在没得多介绍,天天用它来对日志进行过滤。
用例
配置 –color 参数
高亮匹配到的关键字。那么可以通过 --color=[when]
参数来开启。
[when]
的取值为:
- never
- always
- auto
之所以需要这三个参数,那是因为所谓”高亮“其本质是在匹配到的关键字前后加上 颜色控制符。这样做相当于会”污染“了目标内容。never
与 always
的含义非常明确,不必多说。这里解释一下 auto
的含义。当 --color=auto
时,如果 grep 命令的内容是直接输出到终端上那就会高亮文本,否则就不会高亮文本。比如,重定向到文件里或者通过管道传给下一个命令时,就不会高亮(污染)文本。
这个行为还是很常用的,每次都输入这个参数就比较麻烦。可以设置一个 alias
alias grep="grep --color=auto"
今天在本机查看日志发现 grep 没有高亮,才发现原来开发服务器上的 grep 其实是一个 alias。
搜索含关键字的文件
前段时间有人问 “我如何实现一个 Promise.all?” 我一时答不上来。我记得很早之前实现过一版 MyPromise,但是翻找了几个常用仓库都找不到。于是只能祭出 grep 来搜索了。
我清晰的记得,那个 Promise 实现的命名是 MyPromise
。于是,使用如下命令:
grep -rnw '~/Code' -e 'MyPromise' --exclude-dir=node_modules
解释一下:
-r
表示递归-n
表示显示行号-w
表示匹配关键字的模式是 word,即关键字是作为“单词”(前后有空格)进行匹配的,而不是作为字符子串-e
指定了匹配关键字是MyPromise
--exclude-dir
很好理解,就是忽略掉宇宙第一大天体 —— node_modules
过一会,总算搜索到了失联的 MyPromise 实现。