正则表达式

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、文件管理类命令主要有mkdir、rmdir、cp、mv、rm等 mkdir:make directory创建文件夹 -p:自动按需创建父目录 -v:显示创建过程 -m:创建时给定文件夹权限 创建层级文件夹时,需保证上一级目录存在,否则会报错,例如   创建层级文件夹时,可以加上-p选项,递归创建不存在的上级目录,例如   rmdir:删除文件夹 -p:删…

    2017-12-10
  • 第一周n28

    1.计算机的组成及功能 计算机由五大部件组成。控制器、运算器、存储器、输入输出设备。 1.控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2.运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工…

    Linux干货 2017-12-03
  • python之psutil模块

    python 安装psutil 来实现获取系统信息  # yum -y install python*pip # yum -y groupinstall “Development Tools # yum -y install python34-devel.x86_64 # pip3 install –upgrade pip # pip3 inst…

    Linux干货 2017-03-08
  • 0806文本处理工具

    ———- 文件查看工具 ———- cat:    cat [OPTION]… [FILE]…   //查看文本文件内容,一般后面跟文件名(相对路径),或者是文件名(绝对路径) -n 加行号 -b 加行号,…

    Linux干货 2016-08-07
  • N25-第1周博客作业

    计算机概述及命令 一、计算机原理及其组成功能 计算机作为一个整体,由软件和硬件两大部分组成:  (1)计算机硬件系统。        计算机的硬件系统结构有哈佛结构和冯·诺伊曼结构两种。 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内…

    Linux干货 2016-12-03
  • 马哥教育网络班20期+第三周课程练习

    1. 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [oracle@ocp ~]$ who root     pts/1        2016-06-26 …

    Linux干货 2016-06-26