Shell脚本编程学习6--正则表达式

一、正则表达式

   1、概念:

        通俗的说,正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。

   2、作用:

       管理系统时,查看系统文件信息,通过正则表达式就可以很轻松的搞定某字符的特定处理。

   3、分类:

       基础正则表达式和扩展正则表达式。

二、基础正则表达式

    1、特殊符号:

     (1)[:alnum:]  代表英文大小写字符及数字,即0-9,a-z,,A-Z

     (2)[:alpha:]   代表任何英文大小写字符,即a-z,A-Z

     (3)[:upper:]  代表大写字符, 即A-Z

     (4)[:lower:]  代表小写字符,即a-z

     (5)[:digit:]  代表数字而已,即0-9

    2、符号练习:

    (1)查找特定的字符串:

              查找regular_express.txt中的the字符


             查找出去the字符的其他字符


              查找忽略大小写的字符the


    (2)利用中括号[]来查找集合字符:

             查找test和taste这两个单词,他们有一个字符差别


              中括号[]里不管有几个字符,它都代表某“一个”字符


    (3)行首与行尾字符^$:

              查找只出现在行首的the


              查找只出现在行尾的.


              查找空白行


    (4)任意一个字符.与重复字符*:

              .(小数点):代表一定有一个任意字符的意思

              *(星号):代表重复前一个字符0到无穷多次的依次


    (5)限定连续RE字符范围{}:

             查找2~5个o的连续字符串


    3、符号总结:

     (1)^word :待查找的字符串(word)在行首

     (2)word$:待查找的字符串(word)在行尾

     (3).          :代表一定有一个任意字符的字符

     (4)\          :转义字符,将特殊符号的特殊意义去掉

     (5)*         :重复前一个字符0个到无穷多次

     (6)[list]   :从list列表里找出想要的字符

     (7)[n1-n2]:从字符集合里找出想要选取的字符范围

     (8)[^list]  :找出非list列出的字符

     (9)\{n,m\}:连续n到m个的前一个重复字符

                    \{n\}:连续n个前一个RE字符

                   \{n,\}:连续n个以上的前一个RE字符

    4、sed工具:

    (1)作用:将standard input数据进行替换、删除、新增、选取特定行等的功能

    (2)语法:sed [-nefri] [动作]

    (3)参数:

                  -n:安静模式,一般,所有来自stdin的数据都会被列出到屏幕上,但如果加上-n参数,则只有经过sed特殊处理的那一行才会被列出

                  -e:直接在命令行模式上进行sed的动作编辑

                   -f:直接将sed动作写在一个文件内,-f filename 则可以执行filename内的sed动作

                   -r:sed动作支持的是扩展型正则表达式的语法(默认是基础正则表达式)

                   -i:直接修改读取的文件内容,而不是由屏幕输出


                 动作说明:[n1[,n2]]function

                 n1,n2:不见得会存在,一般代表选择进行动作的行数,举例来说,如果我的动作是需要在10到20行之间进行的,则“10,20[动作行为]”

                 function有下面这些参数:

                 a:新增,a的后面可接字符串,而这些字符串会在新的一行出现(目前的下一行)

                 c:替换,c的后面可接字符串,这些字符串可以替换n1,n2之间的行

                 d:删除,d后面不接任何字符

                  i:插入,i后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

                 p:打印,也就是将某个选择的数据打印出来

                 s:替换,可以直接进行替换的工作

    (4)例子:

             1) 以行为单位的新增或删除功能


               删除:


              新增:


              2)以行为单位的替换与显示功能

                    将第2~5行的内容替换成为“No 2-5 number”


                    仅列出文件中的第5-7行


              3)部分数据的查找并替换的功能

                    格式:sed 's/要被替换的字符串/新的字符串/g'

                    提取ip地址:


              4)直接修改文件内容

                   sed -i 可以直接修改文件的内容


三、扩展正则表达式

    扩展正则表达式的特殊符号

   (1)+     :重复一个或一个以上的前一个RE字符

   (2)?   :0个或一个的前后一个RE字符

   (3)|      :用或的方式找出数个字符串

   (4)( )   :找出组字符串

   (5)( )+ :多个重复组的判别


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值