grep
1.0、参考
1.1、grep简介

grep首次出现是在Version 6 AT&T UNIX

grep是一个根据正则表达式进行匹配文件内容的工具。

grep的实现:

GNU grepgrep
BSD grepgrep
1.2、通过包管理器安装GNU grep
操作系统包管理器安装命令
Windowsscoopscoop install grep
WindowsChocolateychoco install -y grep
macOSHomeBrewbrew install grep
GNU/LinuxLinuxBrewbrew install grep
aptsudo apt-get install -y grep
CentOSyumsudo yum install -y grep
dnfsudo dnf install -y grep
openSUSEzyppersudo zypper install -y grep
Alpine Linuxapksudo apk add grep

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm grep
Gentoo LinuxPortagesudo emerge grep
1.3、通过编译源码安装GNU grep 

step1、安装依赖

下载时cURL
解压时tarxz
编译时POSIX shGNU CoreUtilsGNU makeGCC ( gcc )   | LLVM / Clang
运行时glibc ( libc.sold-linux-x86-64.so )

step2、使用curl命令下载GNU grep源码包 (

curl -LO https://mirrors.tuna.tsinghua.edu.cn/grep/grep-3.3.tar.xz

step3、使用tar解压GNU grep源码包

tar vxf grep-3.3.tar.xz

step4、进入grep-3.3目录,并查看它的内容

step5、配置、编译、安装

./configure && make && sudo make install
1.4、grep命令

grep命令的使用格式如下:

grep PATTERN options... PATH
1.4.1、-r

grep默认只在指定的文件夹中查找,不在递归在子文件夹中查找,要想递归的在子文件夹中查找,就要使用该参数。

示例:

grep "com.fpliu" -r .
1.4.2、-l

grep默认会列出匹配的所在行的内容和所在的文件路径。如果不想要匹配到的所在行的内容,就可是使用此参数。

示例:

grep "com.fpliu" -rl .
1.4.3、-n

grep默认会列出匹配的所在行的内容和所在的文件路径。并没有显示匹配行的行号,如果想显示匹配到的行的行号,使用此参数。

示例:

grep "com.fpliu" -rn .
1.4.4、-e PATTERN | --regexp=PATTERN

正则表达式只有一个的时候,可以省略-e,当正则表达式有多个的时候,就需要用多个-e指定。

示例:

grep "com.fpliu" -rn .
grep -e "com.fpliu" -rn .
grep -e "com.fpliu" -e 'leleliu008' -rn .
1.4.5、-v | --invert-match

反向匹配正则表达式。也就是获得正则表达式没有匹配到的内容。

示例:

grep -v "com.fpliu" -rn .
grep -v -e "com.fpliu" -rn .
grep -v -e "com.fpliu" -e 'leleliu008' -rn .
1.4.6、--color=auto

可以将找到的关键词部分加上颜色,以区别于其他内容进行显示。

对于颜色的设置,还可以通过GREP_OPTIONS环境变量进行设置,这样,就不用每次敲命令的时候带上--color=auto参数了。

export GREP_OPTIONS='--color=auto'

还可以通过GREP_COLOR环境变量设置颜色:

取值颜色说明
30black
31red
32green
33yellow
34blue
35purple
36cyan
37white
export GREP_COLOR='31'