正则表达式

grep:Global search REgular expression and Print out the line

        文本搜索工具,根据用户指定的”模式“对目标文本逐行进行匹配检查;打印匹配到的行

       模式:由正则表达式字符及文本字符所编写的过滤条件

     grep命令选项:

        –color=auto:对匹配到的文本着色显示;

        -v:显示不能够被匹配到的行;

        -i:忽略字符的大小写

       -n:显示匹配到的行号

       -c:统计匹配的行数

      -o:仅显示匹配到的字符串

        -q:静默模式,不输出任何信息

        -A#:after,后#行

         -B:before,前#行

         -C:context,前后各#行

         -e:实现多个选项间的逻辑or关系

                      grep -e ’cat‘ -e ‘dog’file 

         -w:整行匹配整个单词

         -E:使用ERE

   元字符分类:字符匹配,匹配次数,位置锚定,分组

           字符匹配:

                . :匹配任意单个字符

                [] :匹配指定范围内的任意单个字符

                [^]:匹配指定范围内的任意单个字符

                 [:diget:]数字    [:lower:]小写字母  [:upper:]大写字母  [:alpha:] 任意字母      [:alnum:] 数字和字母   [:space:]空格       [:punct:]标点符号

                匹配次数:

                   *:匹配前面的字符任意次  eg:a*b   匹配a任意次

                   .*:任意长度的任意字符

                   \?:匹配其前面的字符0次或1次

                    \+:匹配其前面的字符至少1次

                    \{m\}:匹配其前面的字符m次

                    \{m,n\}:匹配其前面的字符至少M次,至多n次

                     \{,n\}:匹配其前面的字符至多n次

                     \{m,\}:匹配其前面的字符至少M次

  位置锚定:

                     ^:行首锚定,用于模式的最左侧

                     $:行尾锚定,用于模式的最右侧

                      ^$:空行

                      ^[[:space:]]$空白行

                   \<或\b:词首锚定,用于单词的左侧

                    \>或\b:词尾锚定,用于单词的右侧

                    \<PATTERN\>:匹配整个单词 eg: \<root\>\ 或 \broot\b

    分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

实例:\(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

egrep 扩展的正则表达式

        扩展正则表达式的元字符:

          字符匹配:

             .任意单个字符

            []指定范围的字符

            [^]不在指定范围的字符

         次数匹配
             *:匹配前面的字符任意次   

             ?:0或1次

              +:1次以上

              {m}:匹配m次

               {m,n}:至少m次至多n次

         位置锚定:

               ^:行首锚定

               $:行尾锚定

                \<,\b:词首锚定

                \>,\b:词尾锚定

           分组:()   后向引用:\1,\2……    

                  或a|b     C|cat:c或cat

                     (C|c)at:Cat或cat



[root@localhost ~]# tail -n 0 -f /var/log/messages &      只显示新的监控内容   (后台执行)不影响新的操作

  剪切df下%前的数字

 1[root@localhost ~]# df |tr -s " " ":"|cut -d: -f5|tr -d "%"

Use

2

0

19

21

1

2、查出分区空间使用率的最大百分比值

     [root@localhost ~]# df |tr -s ' ' ':'|cut -d: -f5|sort -n -r

3查出/tmp的权限,以数字方式显示      正则表达式正则表达式正则表达式正则表达式

[root@localhost ~]# stat /tmp|head -4|tail -1|cut -d: -f2|tr -dc '[[:digit:]]'

4查出用户UID最大值的用户名、UID及shell类型

   [root@localhost ~]# cat /etc/passwd |cut -d: -f 1,3,7|sort -t: -k2 -nr正则表达式

练习:grep

1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)

        [root@localhost ~]# egrep '^(s|S)' /proc/meminfo

             [root@localhost ~]# grep ^[sS] /proc

            [root@localhost ~]# grep -i "^s" /proc/meminfo


2、显示/etc/passwd文件中不以/bin/bash结尾的行

           [root@localhost ~]# grep -v /bin/bash$ /etc/passwd

3、显示用户rpc默认的shell程序

            [root@localhost ~]# grep '^rpc\b' /etc/passwd |cut -d: -f7

                 

4、找出/etc/passwd中的两位或三位数

[root@localhost ~]# grep "\b[0-9]\{2,3\}\b" /etc/passwd

[root@localhost ~]# grep "\b[1-9][0-9]\{1,2\}\b" /etc/passwd

5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

[root@localhost ~]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg

6、找出"netstat -tan"命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行  

[root@localhost ~]# netstat -tan |grep "LISTEN[[:space:]]$\?"

   7、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行      

       [root@localhost ~]# grep '^\b\(.*\)\b.*/\1$' /etc/passwd

          [root@localhost ~]# grep '^\<\(.*\)\>.*\b\1\b$' /etc/passwd

           [root@localhost ~]# grep '^\(.*\).*/\1$' /etc/passwd

      

练习egrep

1、显示当前系统root、mage或wang用户的UID和默认shell

              root@localhost ~]# egrep "^\<root\>|^\<mage\>|^\<wang\>" /etc/passwd | cut -d: -f3,7

[root@localhost ~]# egrep "^(root|mage|wang)\b" /etc/passwd |cut -d: -f3,7

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

[root@localhost ~]# grep -E "^[[:alnum:]_]+\(\)" /etc/rc.d/init.d/functions 

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

init.d/function" |egrep -o "[^/]+/?$"

原创文章,作者:蛰伏,如若转载,请注明出处:http://www.178linux.com/30303

(0)
蛰伏蛰伏
上一篇 2016-08-08
下一篇 2016-08-08

相关推荐

  • Linux的用户组和权限(一)

    导读:本章主要内容如下       1.解释Linux的安全模型      2.解释用户账号和组群账号的目的      3.用户和组管理命令      4.理解并设置文件权限 &n…

    Linux干货 2016-08-04
  • 推荐-btrfs文件系统介绍及操作

    btrfs文件系统支持写时复制功能,对备份很有帮助。在单个硬盘时,btrfs是没有意义的。     核心特性:         多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”、“移除”,“修改”;       …

    Linux干货 2016-06-01
  • 用户和组相关配置文件

    用户和组的配置文件都在/etc目录下          /etc/passwd;        内容格式:用户名;加密后密码影子(1#);UID;GID;注释;家目录,默认shell    …

    Linux干货 2016-10-23
  • linux运维

    linux运维大纲,学习路线图

    Linux干货 2017-10-21
  • keepalived高可用

    keepalived实现wrrp热网关备份:keepalived配置文件如下主:! Configuration File for keepalived global_defs {  notification_email {    acassen@firewall.loc    failover@firewal…

    Linux干货 2017-05-16
  • 计算机组成及功能简介

    计算机(computer)       当今它已经走进千家万户,应用在各个领域,没有用过计算机的朋友应该很少了吧?但是,你真正了解计算机是什么吗?(我也是刚刚了解的,(*^__^*)嘻嘻……)那么,接下来,让我们一起探究一下它的具体构造吧!       所谓的计算机就是…

    Linux干货 2016-10-25