则表达式(REGular EXPression REGEXP)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特殊字符、及这些特定字符的组合,组成的一个“规则字符串”,这个“规范字符串”用来表达对字符串的一种过滤逻辑。通过正则表达式,我们可以从字符串中获取我们想要的特定部分。

正则表达式的主要特点:

1、  灵活性、逻辑性和功能性非常的强;

2、  可以迅速地用极简单的方式达到字符串的复杂控制。

3、  对于刚接触的人来说,比较晦涩难懂;可一但掌握并熟练应用后,可以发现它的强大之处

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,大小编辑器都可以使用它来处理文本内容。在下文主要讲的是它在linux中的应用技巧

基本正则表达式:Basic

模式:grep[options]PATTERN[FILE…]

-i:不区分字母大小写

--color:把符合条件的用颜色显示出来

-v:显示没有被模式匹配到的字符串

-o:只显示被模式匹配到的字符串

-n:输出行号

-E:使用扩展正则表达式

-A#:这一行后的#行都显示出来

-B#:这一行前#行都显示出来

-C#:前后#行都显示出来

\{n,m\}:连续nm个的“前一个字符”

元字符:

   .:匹配任意单个字符

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

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

 字符集合:[:space:]空白字符、[:digit:]数字、[:lower:]小写字母、[:alnum:]数字和大写字母、等。可以使用 #man 7 glob来查看具体的各个命令(参看上文)

例如:(#[root@localhost`]#

   1、搜索特定的字符 # grep ‘root’ /var/log/secure

       /var/log/secure这个文件中有root的那一行显示出来

   2、反向选择 #grep –v ‘root’ /etc/passwd

   3、锚定行首 #grep ‘^root’ /etc.passwd

        显示出以root开头的行

4、  限定连续重复字段范围 #grep  ‘‘o\(2\)’’ /etc/passwd

      找到两个o的字符串

5、  显示/etc/inittan中以#开头,并且后面跟一个或多个空白字符,而后又跟了非空白字符的行 grep ‘^#[[:space:]]\{1,\}[^[:space:]]’ /etc/inittab

6、  取出默认shell/sbin/nologin用户列表

         grep ‘nologin$’ /etc/passwd | cut –d: -f1 (此条命令用到了管道、cut命令、等)

扩展正则表达式:Extended 大部分用法及命令都与正则表达式相同

           Grep –E=egrp

   特殊字符的使用:

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

     ?:“0个或1个”字符

     | :用或的方式找出这个符合的字符串

             Eg: C|cat: Ccat

                (Cc)at: Cat cat

():找出“用户组”字符串

   次数匹配:

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

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

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

   位置锚定字符:

      ^:锚定行首,此字符后面的任意内容必须出现在行首

      $:锚定行尾,此字符前面的任意次内容必须出现在行尾

      ^$:空白行

       \<\b:锚定行首,其前面的任意字符必须作为单词首部出现

        \> \b:锚定行尾,其后面的任意字符必须作为单词尾部出现

       \<root\>:必须是单词

其他的关于正则表达式的还有很多命令就不一一展示了