• 专题(一) grep命令


    一. 知识点

    1、命令

    命令  说明  备注 
    pattern控制    
     -E  将样式为延伸的正则表达式来使用。  
     -F 或 --fixed-regexp  将样式视为固定字符串的列表  
     -G  将样式视为普通的表示法来使用  
     -P    
     -e  指定字符串做为查找文件内容的样式(正则表达式??)  
     -f  指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。  
     -i  忽略字符大小写的差别  
     -w  单词完全匹配,只显示全字符合的行  
     -x  整行完全匹配,只显示全列符合的行  
     -z    
     其它    
     -s   不显示错误信息  
     -v  显示不包含匹配文本的所有行  
     -V   显示版本信息  
     --help  显示所有用法  
     输出控制    
     -m,--max-count=NUM  只显示匹配的前 NUM 行  
     -b,--byte-offset  在显示符合样式的那一行之前,标示出该行第一个字符的编号  
     -n,--line-number  在显示符合样式的那一行之前,标示出该行的列数编号  
    --line-buffered    
    -H,--with-filename 在显示符合样式的那一行之前,表示该行所属的文件名称。  
    -h,--no-filename 在显示符合样式的那一行之前,不标示该行所属的文件名称  
    --label=LABEL

    use LABEL as the standard input file name prefix

     
    -o,--only-matching 只显示匹配PATTERN 部分  
    -q,--quiet,--silent 不显示任何信息  
    --binary-files=TYPE

    assume that binary files are TYPE;
    TYPE is 'binary', 'text', or 'without-match'

     
    -a,--text 等同于 --binary-files=text  
    -I 等同于 --binary-files=without-match  
    -d,--directories=ACTION

    ACTION 的值范围有:read\skip\recurse

    当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

     
    -D,--devices=ACTION

    ACTION 的值范围有:read\skip

    当指定要查找的 devices/FIFOS/sockets 时,必须使 用这项参数,否则grep指令将回报信息并停止动作。

     
    -r,--recursive

    --directories=recurse

    当指定要查找的是目录时,递归目录从里面文件中进行匹配查找

     
    -R    
    -L,--files-without-match 列出文件内容不符合指定的样式的文件名称。  
    -l,--files-witch-match  列出文件内容符合指定的样式的文件名称  
    -c,--count 打印出每个文件中 符合样式的列数  
    -T,--initial-tab    
    -Z    
    上下文控制    
    -B,--before-context=NUM 除了显示符合样式的那一行之外,并显示该行之前的内容。  
    -A,--after-context=NUM 除了显示符合范本样式的那一列之外,并显示该行之后的内容。  
    -C,--context=NUM 除了显示符合样式的那一行之外,并显示该行之前后的内容。  
    -NUM    

    2、用法

    用法名称 命令 备注
    模糊匹配 grep xxx  
    精确匹配 grep -w xxx  
    忽略大小写匹配 grep -i xxx  
    正则表达式 grep -n 正则表达式 grep -n '^[a-z]':以a-z任何一个字符开头的内容
    反向选择 grep -v  xxx

    不包含

    grep -v '^$'  不包含空行

         
         
         
         

    二. 示例

    1、从文件中匹配关键字符串

    grep "<version>" /test.xml

    或者

    cat /test.xml |grep "<version>"

    2、在输出的结果中匹配

    ls /var/spool/cron |grep root

    echo $data |grep bic

    3、从多个文件中匹配内容

    grep hello test*

    查找前缀有test的文件 中含有  hello 的行

    $ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件  
    testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行  
    testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行  
    testfile_2:Linux test #列出testfile_2 文件中包含test字符的行 

    4、递归目录及其子目录下的所有文件查找匹配内容

    grep -r update /etc/acpi 

     输出结果如下:

    $ grep -r update /etc/acpi #以递归的方式查找“etc/acpi”  
    #下包含“update”的文件  
    /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)  
    Rather than  
    /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of  
    IO.) Rather than  
    /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update 

    参考:

    https://www.runoob.com/linux/linux-comm-grep.html

  • 相关阅读:
    vue与laravel
    php artisan 命令
    HTTP 状态码
    PhpStorm提高效率的使用方法及设置
    好RESTful API的设计原则
    laravel 入门基础之安装
    c++ sizeof(字符数组)
    new delete/delete[] 测试
    linux g++ 查找动态链接库
    linux下定时器耗时研究
  • 原文地址:https://www.cnblogs.com/sandyflower/p/14031344.html
Copyright © 2020-2023  润新知