必会的Linux grep命令-by gyf
About Me
》大家好,我是郭永峰
》Java技术分享者、讲师、开发工程师
》欢迎添加我为好友,一起学习交流
》微信和QQ同号(1030103135)
》JavaQQ交流群(787578633)
序言
在Linux服务器做系统维护时,会经常用grep这个命令,今天想简单的分享常见的用法。
一、grep 介绍
- grep: global search regular expression(RE) and print out the line
- 翻译中文意思:全面搜索正则表达式并把行打印出来
- grep是一种强大的文本搜索工具
- 它能使用正则表达式搜索文本,并把匹配的行打印出来
二、grep的命令参数
-
在Xshell中输入 grep -help会有很多关于这个命令的讲解
grep --help -
grep的命令讲解
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
三、通过案例来讲解grep的使用
3.1 准备工作
- 现在我们来学习常用的命令参数,我们先在当前目录下写个文件,内容随便写。我在当前路径创建了个gyf.log文件,内容如下
gyf.log - grep的命令格式
grep -? searchcontent filename1 filename2
3.2 grep案例
- 案例1: 查gyf.log中是否有gyf内容的行,并打印出来
-e 指定字符串作为查找文件内容的范本样式
image.png
- 案例2:查询gyf.log中是否有gyf行内容,不区分大小写
-i 忽略字符大小写的差别
- 案例3:显示gyf.log中除了gyf以外的所有行数据
-v 反向查找
- 案例4:查询gyf.log中有数字(正则匹配)的行数据
-e 用正则去匹配
- 案例5:查询gyf.log中gyf出现的次数
-c 统计出现的次数
- 案例6:查询gyf的行内容,并打印行数
-n 打印行数
3.3 grep与其它命令组合
-
在系统维护中,我们经常会将grep与其它命令一起使用进行结果过滤
-
案例1:查询指定的进程(如:mysql),默认ps -ef 是显示所有的进程
ps 与 grep 的组合使用,【用于过滤进程名】
- 案例2:查看redis进程
如果你没有安装redis,下面的命令你是查不出有结果的
- 案例3:查看当前目录有gyf的文件名
ls 与 grep 的结合使用 【用于过滤文件名】
ls -lrt:表按时间升序并以列表形式显示文件,如果不加r,则表示降序
-l 列表
-t 时间排序
-r 相反
- 案例4:查看指定端口的状态
netstat 与grep 结合使用【用于过滤端口】
netstat -nlp | grep java - 过滤Java相关的程序,下图是因为tomcat占用了3个端口
netstat -nlp | grep 3306 - 过滤3306的端口,可以看到端口是开启的
netstat -nlp | grep 8080 - 8080是tomcat的端口,这个命令可知道tomcat是开启的
谢谢您观看此文章
在这里GYF祝您和家人身体健康,生活幸福美满
如果觉得此文章OK的话,帮忙转发下
Java基础和JavaWeb
网友评论