zoukankan      html  css  js  c++  java
  • 第二天 linux 过滤,正则表达式

    1、过滤文本内容 ---- grep

    1.作用
    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expr

    ession Print,表示全局正则表达式版本,它的使用权限是所有用户。

    2.格式
    grep [options]

    3.主要参数
    [options]主要参数:
    -c:只输出匹配行的计数。
    -i:不区分大 小写(只适用于单字符)。
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及 行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。
    pattern正则表达式主要参数:
    : 忽略正则表达式中特殊字符的原有含义。
    ^:匹配正则表达式的开始行。
    $: 匹配正则表达式的结束行。
    <:从匹配正则表达 式的行开始。
    >:到匹配正则表达式的行结束。
    [ ]:单个字符,如[A]即A符合要求 。
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    。:所有的单个字符。
    * :有字符,长度可以为0。

    选项说明:

        • –color=auto:对匹配到的文本着色,高亮显示
        • -E:表示支持使用扩展的正则表达式,等同于egrep
        • -q:静默模式,不输出任何信息到标准输出
        • -A(after):显示匹配到的行和其后面的行,给一个数字
          • grep -A 1 root /etc/passwd
        • -B(before):显示匹配到的行和其前面的行,给一个数字
          • grep -B 1 root /etc/passwd
        • -C(center):显示匹配到的行和其前后的行,给一个数字
          • grep -C 1 root /etc/passwd

        
    正则表达式Regex    
     
    匹配单个字符的元字符  
        
    1) .    任意单个字符
     
    [root@localhost ~]# grep "r..t" /etc/passwd
     
    2) [a1b]    方括号任意一个字符        
     
    [root@localhost ~]# "grep r[abc]t" /etc/passwd
     
    -    连续的字符范围  
     
        [a-z]    [A-Z]     [a-zA-Z]    [0-9]    [a-zA-Z0-9]
     
    ^    取反
     
        [^a-z]
     
    [root@localhost ~]# grep "a[^a-z]t" /tmp/1.txt  
     
     
    3) 特殊字符集  
     
        [[:digit:]]            任意单个数字  
        [[:alpha:]]            任意单个字母
        [[:upper:]]            任意单个大写字母
        [[:lower:]]            任意单个小写字母
        [[:alnum:]]            任意单个数字、字母
        [[:space:]]            任意单个空白字符
        [[:punct:]]            任意单个标点
     
    [root@localhost ~]# grep "a[[:upper:]]t" /tmp/1.txt
        
        
        
    匹配字符出现的位置
     
    ^string            以string开头
     
    [root@localhost ~]# grep "^root" /etc/passwd  
     
    [root@localhost ~]# grep "^[A-Z]" /tmp/1.txt
     
    [root@localhost ~]# grep "^[^A-Z]" /tmp/1.txt
     
     
    string$            以string结尾
     
    [root@localhost ~]# grep "bash$" /etc/passwd
     
     
    ^$        空行  
     
    [root@localhost ~]# grep "^$" /etc/fstab | wc -l
     
     |  管道    
        作用:把前面输出的结果当做后面命令的条件  
     
    匹配字符出现的次数  
     
    *        前一个字符出现任意次        ab*        
     
    [root@localhost ~]# grep "ab*" /tmp/2.txt
     
    ?        前一个字符出现0次或者1次    可有可无      
     
    [root@localhost ~]# grep "ab?" /tmp/2.txt
     
    +        前一个字符出现1次或者多次     
     
    [root@localhost ~]# grep "ab+" /tmp/2.txt
     
     
    {4}    前一个字符精确出现4次
     
    [root@localhost ~]# grep "ab{3}" /tmp/2.txt
     
    {2,4},   {2,}
     
    [root@localhost ~]# grep "ab{2,4}" /tmp/2.txt
     
    [root@localhost ~]# grep "ab{2,}" /tmp/2.txt
     
     
    分组    (ab)
     
    [root@localhost ~]# grep "(ab){2,}" /usr/share/dict/words  
     
     
    option选项:
     
    -i        忽略大小写  
     
    [root@localhost ~]# grep -i "^r" /tmp/1.txt
     
     
    -o         仅显示符合PATTERN的内容
     
    [root@localhost ~]# grep -o "r..t" /etc/passwd
     
     
    -e         同时根据多个条件过滤内容  
     
    [root@localhost ~]# grep -e "^#" -e "^$" /etc/fstab
     
     
    -v        反向过滤  
     
    [root@localhost ~]# grep -v "^#" /etc/fstab  
     
    [root@localhost ~]# grep -v -e "^#" -e "^$" /etc/fstab  
     
     
    -E        支持扩展正则表达式  
     
    [root@localhost ~]# grep -E "(ab){2,}" /usr/share/dict/words  
     
    [root@localhost ~]# grep -E "bin|sbin" /etc/passwd
     
     
    -A n     显示符合条件的后n行内容
     
    [root@localhost ~]# ifconfig eth0 | grep -A 1 "broadcast"                >>>查看eth0网卡的IP地址信息  
            inet 192.168.122.105  netmask 255.255.255.0  broadcast 192.168.122.255
            inet6 fe80::5054:ff:fe71:3b1c  prefixlen 64  scopeid 0x20<link>
     
     
    -B n     显示符合条件的前n行内容
     
    [root@localhost ~]# ip addr show eth0 | grep -B 1 "global"                >>>查看网卡的IP地址及MAC地址
        link/ether 52:54:00:71:3b:1c brd ff:ff:ff:ff:ff:ff
        inet 192.168.122.105/24 brd 192.168.122.255 scope global dynamic eth0

    通配符

      • *:匹配任意长度的任意字符,可以一个都没有
      • ?:匹配任意单个字符,必须有一个
      • [ ]:匹配指定范围内的单个字符
      • [^]:匹配指定范围外的任意当个字符
        • [^[0-9]]或[^0-9]:表示匹配数字外的任意字符
        • [^[:upper:]]:表示匹配大写字母外的任意字符
        • pa[0-9]: pa后面匹配一个数字
        • [a-z], [A-Z] [0-9] [a-z0-9] [abdxy]
        • pa[0-9]: pa后面匹配一个数字
        • pa[0-9][0-9]: pa后面匹配两个数字
        • [[:upper:]]:表示所有大写字母
        • [[:lower:]]:表示所有小写字母
        • [[:alpha:]]:表示所有字母
        • [[:digit:]]:表示所有数字
        • [[:alnum:]]:表示所有的字母和数字
        • [[:space:]]:表示所有的空白字符
        • [[:punct:]]:表示所有的标点符号
        • 坚持养成习惯,完全不是自己总结的东西,只想有个笔记。
    对于发的内容,请大神指点。
  • 相关阅读:
    tomcatserver解析(五)-- Poller
    最新版OpenWrt编译教程,解决依赖问题
    操作系统2015(四川大学软件学院)
    Kafka专业监控系统Kafka Eagle:支持kerberos认证,并且对接星环TDH集群
    logstash导出ElasticSearch数据到CSV及同步两套ES的数据研究
    hive通过like方式查询多个值
    hadoop balancer平衡集群各节点数据
    Inceptor命令04-表
    Inceptor命令02-命令使用
    Inceptor命令01-表介绍
  • 原文地址:https://www.cnblogs.com/gongll/p/7341073.html
Copyright © 2011-2022 走看看