PHP程序员小白到大牛集训(12期免息)
作者信息
视频教程分类
推荐视频教程
  • php程序员小白到大牛三个月集训php程序员小白到大牛三个月集训
  • Laravel 9 学习正当时—保姆级教程,想学不会都难!Laravel 9 学习正当时—保姆级教程,想学不会都难!
  • 千万级数据并发解决方案(理论+实战)千万级数据并发解决方案(理论+实战)
  • Laravel基础与实战(模块化)Laravel基础与实战(模块化)
  • UNI-APP开发(仿饿了么)UNI-APP开发(仿饿了么)
  • 首页 >运维 >linux运维 > 正文

    全面详解linux下grep命令的用法

    原创2020-09-17 09:13:351453 关注公众号:每天精选资源文章推送
    学linux系统,grep这个命令是必须要掌握的。grep命令是用来查找文件或标准输出中匹配的行,它的强大之处在于它支持正则表达式。日常工作中,grep绝对是用的最多的命令之一。

    注:本文只介绍grep的用法,关于正则表达式不做介绍。

    下面来看看它的一些常见选项以及含义:

    选项

    • -i 搜索时候忽略大小写

    • -n 列出所有的匹配行,显示行号

    • -v 反向选择

    • -c 只输出匹配行的数量

    • -l 只列出符合匹配的文件名,不列出具体的匹配行

    • -h 查询多文件时不显示文件名

    • -r 递归搜索

    • -q 禁止输出任何结果,已退出状态表示搜索是否成功

    • --color=auto 将找到的关键字加上颜色显示

    • -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)

    • -B, --before-context=NUM 打印以文本起始的NUM 行

    • -A, --after-context=NUM 打印以文本结尾的NUM 行

    下面来介绍grep的一些用法:

    我们知道php.ini有一个时区的配置,具体的不太清楚,只知道timezone,现在我们想找到该配置信息,就可以使用grep来查找

    # 加上-i选项,忽略大小写
    # grep -i timezone /usr/local/php/etc/php.ini 
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    date.timezone = PRC

    grep支持在多个文件中查找

    # 这里我们加上-n选项,输出文件的行号
    # grep -in stdio itoa.c quicksort.c 
    itoa.c:2:#include <stdio.h>
    quicksort.c:1:#include <stdio.h>

    反向选择的-v使用,当我运行了一个程序,想要看看这个程序是否还存在进程中,可以使用下面的方法

    # ps aux | grep curl.php 
    root     14374 98.3  1.2 277844 12396 pts/0    R+   07:54   1:07 php curl.php
    root     14404  0.0  0.0 112664   984 pts/2    R+   07:55   0:00 grep --color=auto curl.php

    这里就有个问题,我们需要使用-v来过滤掉grep本身的进程

    # ps aux | grep curl.php | grep -v grep 
    root     14374 98.5  1.2 277844 12396 pts/0    R+   07:54   2:36 php curl.php

    我们想统计last命令中含root的行数,那么这里就需要用到-c选项了。

    # last | grep -c root
    353

    经常有这种需求,需要批量替换文件中的某文本,那么怎么知道这些文本在哪几个文件中呢。grep可以做到,配合-l选项

    # find . -type f -exec grep -l define {} \;
    ./find.c
    ./itoa2.c
    ./wc.c
    ./test.c
    ./wordcnt.c
    ./longestline.c
    ./cal.c
    ./sortline2.c
    ./sortline.c
    ./found.c
    ./atof.c

    下面再看一个例子,该例子用到了-E扩展正则,我们想要过滤掉php.ini文件中的注释行以及空白行

    grep -vE '^;|^$' /usr/local/php/etc/php.ini

    还有一个常用的选项-r,它可以用来递归查找当前目录下所有文件,以及子目录文件。下面,我们想查看网站目录下还有footer的文件有哪些,可以用下面的命令来查找

    grep -rn footer ./

    以上就是全面详解linux下grep命令的用法的详细内容,更多请关注php中文网其它相关文章!

    20期PHP线上班

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:linux grep
  • 推荐:Linux视频教程零基础入门到精通

    相关文章

    相关视频


    专题推荐