..

grep命令的使用

介绍

grep 根据 Wiki 的描述,其名字源于一句话的缩写,大意是它是一个正则表达式的文本搜索工具。这个实在没得多介绍,天天用它来对日志进行过滤。

用例

配置 –color 参数

高亮匹配到的关键字。那么可以通过 --color=[when] 参数来开启。

[when] 的取值为:

  • never
  • always
  • auto

之所以需要这三个参数,那是因为所谓”高亮“其本质是在匹配到的关键字前后加上 颜色控制符。这样做相当于会”污染“了目标内容。neveralways 的含义非常明确,不必多说。这里解释一下 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 实现。