文章目录
grep特点:
grep、sed和awk共属于linux三剑客,awk擅长对记录进行分割处理,sed利于对文本行进行修改,而grep则只是匹配输出。某些使用上sed和grep有共同之处,都可以用来匹配输出。不过grep的匹配更加强大。
grep使用场景:
在linux系统中,作为java开发人员,经常会使用这样一条命令:
ps -ef | grep -E ‘java|mysql’
这条命令可以帮助开发人员定位java和mysql进程,查看是否启动成功和杀死进程,作为最常用的命令,接下来我们来深入了解grep的使用方法
grep详解:
正则匹配选项:
- -G:最基本的正则匹配,grep的默认选项
- -E:扩展的正则匹配,-G和-E的不同之处在最后讲解
grep -E ‘a[p]+’ regular_test.txt
- -P:基于perl语言的匹配方式
匹配控制:
- -e:多次使用-e进行连续匹配
grep -e ‘the’ -e ‘apple’ regular_test.txt
- -f:将一个文件内容作为匹配模式进行匹配,常用于比较文件
比较文件相同之处:
grep -f netstat.txt netstat2.txt
比较文件不同之处:
grep -v -f netstat.txt netstat2.txt
- -i和-y:匹配时忽略大小写区别
grep -i the regular_test.txt
- -v:反选输出,即选择匹配不成功的行
grep -iv the regular_test.txt
- -w:用行中的单词进行匹配,而非字母匹配或者包含匹配
grep -w tools regular_test.txt
基本输出控制:
常用选项:
- -c:只打印结果行的数量
grep -ic the regular_test.txt
高级选项:
- –color:设置匹配字符串的颜色,默认选项为auto,可以设置的值为always,never
grep -i the regular_test.txt --color=never
never选项将会使得匹配字符串没有任何样式
- -m:指定匹配的行数,当匹配的行数达到了设定值,停止匹配
grep -i -m 3 the regular_test.txt
- -o:只打印匹配字符串
grep -i -m 3 -o the regular_test.txt
输出行前缀控制:
常用选项:
- -n:指定行号
grep -i -n the regular_test.txt
高级选项:
- -h:行首不显示文件名称,默认选项
grep -i -h the regular_test.txt
- -H:行首显示文件名称
grep -i -H the regular_test.tx
- -b:行首显示该行的字节数
grep -i -b the regular_test.txt
上下文行控制:
- -A:输出匹配行的后面几行内容,对应after的含义
grep -A 1 the regular_test.txt
- -B:输出匹配行的前面几行内容,对应before的含义
grep -B 2 the regular_test.txt
- -C:输出匹配行的前后几行内容
grep -C 1 the regular_test.txt
文件或者目录选项控制,属于高级
-
-D ACTION:当输入是设备,比如FIFO队列、socket套接字,将使用-D指定的ACTION进行操作,默认是read操作。如果指定为skip,则会静默跳过,不做处理
-
-d ACTION:当输入是目录,使用ACTION进行处理,可以参数为read,skip,recurse,默认是r,将目录当做普通文件处理,skip则是跳过该输入,recurse则是遍历目录下的所有文件当做输入文件进行处理
grep -d recurse ‘LISTEN’ netstat
附录
正则表达式:
基本正则表达式:
- [a-z]:表示a-z的任何一个字符
- [A-Z]:表示A-Z的任何一个字符
- [0-9]:表示0-9的任意一个数字
- [A-Za-z0-9]:表示以上三个中的任意一个
基本的正则表达式在使用?, +, {, |, (, 和 )字符的时候需要使用 / 进行转义,但是扩展的正则表达式不需要转义
字符重复表示:
- ?:表示重复前面字符0-1次
- *:表示重复前面字符0-n次
- +:表示重复前面字符1-n次
- {n}:表示重复前面字符n次
- {n,}:表示重复前面字符n-m次
- {,m}:表示重复前面字符0-m次
- {n,m}:表示重复前面字符n-m次
grep的color配置:
在~/.bashrc文件中加两行:
export GREP_COLOR=‘4;41’
source ~/.bashrc
export GREP_COLOR=‘a;b’ #默认是1;31,即高亮的红色; 您可以根据自己的喜好设置不同的颜色;
-
a可以选择:【0,1,4,5,7,8】
-
0 关闭所有属性
-
1 设置高亮度
-
4 下划线
-
5 闪烁
-
7 反显
-
8 消隐
-
-
b可以选择:【30-37或40-47】
-
30 black
-
31 red
-
32 green
-
33 yellow
-
34 blue
-
35 purple
-
36 cyan
-
37 white
-
30 — 37 设置前景色
-
40 — 47 设置背景色
-
更多问题可以加公众号:代码小栈,期待为您解决更多问题