正则表达式

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 16:11
下一篇 2016-08-08 16:11

相关推荐

  • 初学Linux文件目录结构

    /:根目录 /bin(binary):放置的是二进制文件。可执行的命令;非管理类的命令,通常是系统启动就需要的文件,供所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序。 /sbin:管理类的命令,通常只有管理员可以使用。 /lib:存放的是系统级别的库文件 /lib64:专用于x86_64系统上的辅助共享库文件存放位置  /ro…

    Linux干货 2017-07-13
  • linux用户与用户组详解

    LINUX用户与用户组详解     1,用户和用户组文件   在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。分别是 passed gpassd shadow group 中。   在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc…

    Linux干货 2017-07-22
  • 搜索引擎的技术架构

    1. 搜索引擎的分类 搜索引擎按其工作方式主要可分为三种: 分别是全文搜索引擎(Full Text Search Engine) 目录索引类搜索引擎(Search Index/Directory) 元搜索引擎(Meta Search Engine)。 ■ 全文搜索引擎  全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google、Fast/Al…

    Linux干货 2015-11-18
  • 马哥教育网络20期+第六周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s/^[[:space:]]/#&/ 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白…

    Linux干货 2016-07-07
  • linux系统监控 sar命令详解

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 本文主要以CentOS 6.3 x64系统为例,介绍s…

    Linux干货 2015-06-17
  • find命令的基本用法

     linux 中find 常用示例解析 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]    其实[-H] [-L] [-P] [-D debugopts] [-Olevel]这几个选项并不常用(至少在我的日常工作中,没 &…

    Linux干货 2016-05-05