美文网首页
必会的Linux grep命令-by gyf

必会的Linux grep命令-by gyf

作者: 郭永峰IT教育工作室 | 来源:发表于2018-08-26 11:06 被阅读704次
    必会的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

    相关文章

      网友评论

          本文标题:必会的Linux grep命令-by gyf

          本文链接:https://www.haomeiwen.com/subject/qntoiftx.html