前言

MacOS环境配置GNU版本grep

MacOS环境下自带grep命令,不过是BSD版本,使用grep --version命令即可查看版本。

该版本对-r -p等参数不支持,需要安装GNU版本的grep命令才可执行。

直接使用Homebrew进行安装即可。

1
brew install grep

网上很多教程说要携带--with-default-names参数进行grep命令覆盖,但此参数已经被废弃,无法使用。

题外话,如果Homebrew提示需要更新CLT版本,执行brew update-reset即可。

安装完GNU版本grep后,需要更新一下对应的.bashrc或者.zshrc文件。

1
export PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"

添加完成后对应执行source .bashrc/.zshrc便成功完成替换,此时再次输入grep --version看到输出为GNU版本即为替换成功。

grep命令

基础命令格式如下

1
grep [OPTION] PATTERNS [FILE]

也可以配合管道命令|一起使用

1
[FILE] | grep [OPTION] PATTERNS

PATTERNS为要查询的匹配串,支持正则表达式。

OPTION为命令参数,可以输入多个,常用的参数如下:

-B(NUM), --before-context=NUM
输出匹配行的前NUM行

-A(NUM), --after-context=NUM
输出匹配行的后NUM行

-C(NUM), --context=NUM
输出匹配行的前后NUM行

-r

grep -r [PATTERN] .
在当前目录下递归搜索PATTERN,可以再添加–exclude-from=FILE或者–exclude-dir=GLOB进行过滤。

-v
相当于not操作,查询不包含PATTERN的内容

-c
输出文件匹配PATTERN的总行数

-n
输出文件匹配PATTERN的所在行数

grep [PATTERN1 \| PATTERN2] [FILE]
使用|符号匹配多个PATTERN

参考文稿

macOS 使用 GNU 命令