Linux学习笔记:Shell基础正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记:Shell基础正则表达式相关的知识,希望对你有一定的参考价值。

Shell中经常用到正则表达式的命令包括grep、sed、awk

用于测试的文件内容

[[email protected] ~]# vi testfile 

Current Network Status

Last Updated: Mon Feb 15 10:55:06 CST 2016

Updated every 90 seconds

Nagios Core 4.1.1 - www.nagios.org

Logged in as admin


I like google

It‘s Google, not GOOOOOGLE;

基础正则表达式里的一些特殊符号

1)^word    代表以单词word开头的行

        [[email protected] ~]# grep ^I testfile 

        I like google

        It‘s Google, not GOOOOOGLE;

2)word$    代表以单词word结尾的行

        [[email protected] ~]# grep s$ testfile   

        Current Network Status

        Updated every 90 seconds


3).      点号代表一个任意字符(包括空格)

        [[email protected] ~]# grep t.G testfile        

        It‘s Google, not GOOOOOGLE;

        

4)\      斜杠代表转义字符,把所有含有特殊含义的符号都转回它们本身的字符(包括\自身)

         [[email protected] ~]# grep "\." testfile

         Nagios Core 4.1.1 - www.nagios.org

5)*       代表前一个字符出现任意次数

        [[email protected] ~]# grep "o*g" testfile  

        Nagios Core 4.1.1 - www.nagios.org

        Logged in as admin

        I like google

        It‘s Google, not GOOOOOGLE;

        这个例子中,第一行仅命中g,因为o可以出现任意次数,包括0次

6).*        匹配所有字符,包括空行。

        [[email protected] ~]# grep ".*" testfile

        Current Network Status

        Last Updated: Mon Feb 15 10:55:06 CST 2016

        Updated every 90 seconds

        Nagios Core 4.1.1 - www.nagios.org

        Logged in as admin

        

        I like google

        It‘s Google, not GOOOOOGLE;

7)[]        匹配中括号里所有字符的任意一个

        [[email protected] ~]# grep "[NO]" testfile  

        Current Network Status

        Nagios Core 4.1.1 - www.nagios.org

        It‘s Google, not GOOOOOGLE;

8)[^CHARS]    CHARS可以是多个字母或者范围,不匹配范围内的任意字符。注意,这是字母,不是单词

        [[email protected] ~]# grep "[^G]oo" testfile   

        I like google

9){n,m}        限制前一个字符出现的次数。使用时需要加\转义

        [[email protected] ~]# grep "o\{2,3\}" testfile   #当仅使用时,尽管限制了2到3次,但所有都出来了

        I like gooogle

        not gooooooogle

        It‘s Google, not GOOOOOGLE;

        [[email protected] ~]# grep "go\{2,3\}gle" testfile #当用其他字母夹着来用,则能实现重复出现的次数

        I like gooogle

        还有{n,}和{n},前者代表至少出现n次,后者代表准确出现的次数


以上是关于Linux学习笔记:Shell基础正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Linux shell编程命令-Linux基础环境命令学习笔记

Linux学习8之Shell编程--基础正则表达式

linux shell基础正则表达式与grep命令(编辑中)

Linux学习笔记之正则表达式

linux shell学习计划

JavaScript正则表达式学习笔记之一 - 理论基础