zoukankan      html  css  js  c++  java
  • Linux grep 命令

    grep命令是支持正则表达式的一个多用途文本搜索工具,一般格式为:

    grep [选项] [模式] [文件...]

    grep命令由选项,模式和文件三部分组成,他在一个或多个文件中搜索满足模式的文本航,模板后所有的字符串被看做文件名,文件名可以有多个,搜索的结果被打印到屏幕,不影响源文件内容,grep命令的选项及其意义如表所示:

    选项 意义

    -c

    只输出匹配行的数量
    -i 搜索时忽略大小写
    -F 不支持正则表达式,按字符串字面意思搜索
    -h 查询多文件时不显示文件名
    -l 只列出符合匹配的文件名,而不列出具体的匹配行
    -n 列出所有匹配行,并显示行号
    -s 不显示不存在或无匹配文本的错误信息
    -v 显示不包含匹配文本的所有行
    -w 匹配整词
    -x 匹配整行
    -r 递归搜索当前及子目录
    -q 禁止输出任何结果,以退出状态表示搜索是否成功
    -b 打印匹配行距文件头部的偏移量,以自己为单位
    -o 与-b结合使用,打印匹配词距头部文件的偏移量
    -E 支持扩展正则表达式

    1. -c 选项

    -c表示输出匹配字符串行的数量

    [root@linuxTest Desktop]# grep -c name linuxNote 
    1
    

    2 -n选项

    -n选项列出所有的匹配行,并显示行号

    [root@linuxTest Desktop]# grep linuxTest -n linuxNote 
    2:[root@linuxTest ~]# brctl show
    9:[root@linuxTest ~]# virsh list --all
    15:[root@linuxTest ~]# virsh start centos
    18:[root@linuxTest ~]# virsh domiflist centos

    3. -v选项

    -v反选,即显示不包含模式的所有行。

    [root@linuxTest Desktop]# grep linuxTest -v linuxNote 
    查看linux bridge的配置:
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.f8cab817ea1b    no        em1
                                vnet0
    virbr0        8000.5254002db1be    yes        virbr0-nic

    4.-i 选项

    默认情况选,grep是大小写敏感的,加上-i选项后,不区分大小写。

    [root@linuxTest Desktop]# grep linuxtest -i linuxNote 
    [root@linuxTest ~]# brctl show
    [root@linuxTest ~]# virsh list --all
    [root@linuxTest ~]# virsh start centos
    [root@linuxTest ~]# virsh domiflist centos

    5.-h选项

    -h选项表示查询多文件时不显示文件名

    [root@linuxTest Desktop]# grep linuxTest -h linuxNote test 
    [root@linuxTest ~]# brctl show
    [root@linuxTest ~]# virsh list --all
    [root@linuxTest ~]# virsh start centos
    [root@linuxTest ~]# virsh domiflist centos
    linuxTest
    linuxTest 1111

    6.-l 选项

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

    [root@linuxTest Desktop]# grep linuxTest -l linuxNote test 
    linuxNote
    test

    7.-r 选项

    默认情况下grep只对当前目录进行搜索,-r表示递归搜索,不仅搜索当前目录,而且搜索子目录

    [root@linuxTest Desktop]# grep memory -ir * 
    Binary file rhel-server-6.7-x86_64-dvd.iso matches
    Binary file SW/cherrytree-0.30.5.tar matches
    SW/cherrytree-0.30.5/windows/de_DE.dic:Memorymap/m
    SW/cherrytree-0.30.5/windows/de_DE.dic:memorymap/ozm
    SW/cherrytree-0.30.5/windows/pl.dic:MemoryStick
    SW/cherrytree-0.30.5/windows/pl.dic:memoryzacja/AMNn
    Binary file SW/cherrytree-0.30.5/locale/cs/LC_MESSAGES/cherrytree.mo matches

    8. -q选项

    grep命令师默认输出结果的,-q则不输出结果,而是已退出的状态来表示是否成功,退出状态0表示搜索成功,退出状态1表示表示未搜索到满足模式的行,退出状态2表示由于程序错误未能执行

    [root@linuxTest Desktop]# grep linuxTest -q linuxNote test 
    [root@linuxTest Desktop]# echo $?
    0
    #退出状态是0
    [root@linuxTest Desktop]# grep cccc -q linuxNote test 
    [root@linuxTest Desktop]# echo $?
    1
    #退出状态是1
    [root@linuxTest Desktop]# grep cccc -q -x dsf
    grep: dsf: No such file or directory
    [root@linuxTest Desktop]# echo $?
    2
    #没有该文件,退出状态是2

    grep和正则表达式结合使用的例子

    1.匹配行首

    #以字母v开头的行
    [root@linuxTest Desktop]# grep ^v linuxNote 
    virbr0		8000.5254002db1be	yes		virbr0-nic
    vnet0      bridge     br0        e1000       52:54:00:9c:5e:fc
    

    2. 查找空白行

    [root@linuxTest Desktop]# grep -c ^$ linuxNote 
    2
    

    3.精确匹配

    “<>”用于精确匹配

    [root@linuxTest Desktop]# grep Test test
    linuxTest
    linuxTest 1111
    Test
    
    [root@linuxTest Desktop]# grep "<Test>" test
    Test
    #第二个命令当中,只精确匹配了Test这个单词
    
  • 相关阅读:
    php动态编辑zlib扩展
    部署平台分布式锁设计
    quartz源码分析——执行引擎和线程模型
    RabbitMq核心概念和术语
    Netty SSL安全配置
    跨站脚本攻击介绍
    ssl Diffie-Hellman弱密码问题
    java server wrapper 和 maven assembly 插件
    跨站请求伪造防御
    字符编码笔记:ASCII,Unicode和UTF-8
  • 原文地址:https://www.cnblogs.com/nurruden/p/6279412.html
Copyright © 2011-2022 走看看