2016-2-5 linux基础学习11

grep, egrep, fgrep

grep:根据模式,搜索文本,并将符合模式的文本行显示出来
pattern:文本字符和正则表达式的元字组合而成飞匹配条件

grep [options] PATTERN [FILE...]
    -i 不区分大小写
    --color 给符合标准的查找字符标上颜色
    -v 显示没有被模式匹配的行
    -o 只显示被模式匹配到的字符串,一个一行
    2016-2-5 linux基础学习11_第1张图片

    fgrep:不支持正则表达式(任何字符都是本身的意思)  

     -E 使用扩展正则表达式(grep -E=egrep)
    -A count :显示其后的n行
    -B count :显示其前的n行
    -C count :显示其前后的n行


2016-2-5 linux基础学习11_第2张图片

2016-2-5 linux基础学习11_第3张图片

2016-2-5 linux基础学习11_第4张图片

*: 任意长度的字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符


正则表达式
元字符
    . : 匹配任意单个字符

匹配次数(贪婪模式,部分匹配)
匹配字符
    *   :匹配其前面的字符任意次
    .*  :任意长度的任意字符
    []  :匹配指定范围内的任意单个字符
    [^] :匹配指定范围外的任意单个字符
        [[:space:]]:空白字符
        [[:punct:]]:标点符号
        [[:lower:]]:小写字母
        [[:upper:]]:大写字母
        [[:alpha:]]:大小写字母
        [[:digit:]]:数字
        [[:alnum:]]:数字和大小写字母
   

2016-2-5 linux基础学习11_第5张图片

2016-2-5 linux基础学习11_第6张图片


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

    \{m,n\}:匹配其前面的字符,至少m次,至多n次
        \{1,\}至少一次,最多不限制
        \{0,3\}最多三次
2016-2-5 linux基础学习11_第7张图片

位置锚定
    ^ 字符:锚定行首,此字符后面的任意内容必须出现在行首
    字符 $: 锚定行尾,此字符后面的任意内容必须出现在行尾
    ^$ :空白行

    \<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
    \>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
2016-2-5 linux基础学习11_第8张图片

分组 \(\)
        \(ab\)*:ab可以出现0次/1次

2016-2-5 linux基础学习11_第9张图片

       


    反向引用
        \1:引用第一个左括号以及与之对应的右括号所包括的所有内容
        \2:引用第二个左括号以及与之对应的右括号所包括的所有内容
        \3:引用第三个左括号以及与之对应的右括号所包括的所有内容

2016-2-5 linux基础学习11_第10张图片

2016-2-5 linux基础学习11_第11张图片

扩展正则表达式
    元字符:
    . : 匹配任意单个字符
    \.: 表示.本身的意思
    字符匹配:
        *   :匹配其前面的字符任意次
        .*  :任意长度的任意字符
        []  :匹配指定范围内的任意单个字符
        [^] :匹配指定范围外的任意单个字符
            [[:space:]]:空白字符
            [[:punct:]]:标点符号
            [[:lower:]]:小写字母
            [[:upper:]]:大写字母
            [[:alpha:]]:大小写字母
            [[:digit:]]:数字
            [[:alnum:]]:数字和大小写字母
        
        ? :匹配其前面的字符0/1次    
        +   :匹配其前面的字符至少1次
        {m,n\}:匹配其前面的字符,至少m次,至多n次    
            
    位置锚定:
        ^ 字符:锚定行首,此字符后面的任意内容必须出现在行首
        字符 $: 锚定行尾,此字符后面的任意内容必须出现在行尾
        ^$ :空白行

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

    分组:()
            (ab)*:ab可以出现0次/1次
            反向引用
            \1:引用第一个左括号以及与之对应的右括号所包括的所有内容
            \2:引用第二个左括号以及与之对应的右括号所包括的所有内容
            \3:引用第三个左括号以及与之对应的右括号所包括的所有内容        
    或者:|
        C|cat 表示C或cat
        
5-1练习
1、找出/prop/cpuinfo文件中的1位数,或2位数
2、找出不包含空白且以数字结尾的行
3、找出/boot/grub/grub.conf中1-255之间的整数
4、找出ifconfig命令中结果中的1-255之间的整数
5、找出当前系统上名字为student(必须出现在行首)的用户的账户的相关信息,文件为/etc/passwd
6、分析prep5.txt文件中如下文本前两行的特征(每一行出现的数字必须相同),请写出可以精确找到类似两行的模式
    11:1:wait:/linux/rc.1
    13:3:wait:/linux/rc.3
 

2016-2-5 linux基础学习11_第12张图片

2016-2-5 linux基础学习11_第13张图片

2016-2-5 linux基础学习11_第14张图片

2016-2-5 linux基础学习11_第15张图片

2016-2-5 linux基础学习11_第16张图片

2016-2-5 linux基础学习11_第17张图片



1# grep '[0-9]\{1,2\}' /proc/cpuinfo
2# egrp  --color '*[^[:space:]]*[0-9]$' /boot/grub/grub.conf
3# egrep --color '\<[0-9]|[1-9]|[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]>\'
4# ifconfig | egrep '\<[0-9]|[1-9]|[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]>\'
5# grep '^user' /etc/passwd
6# grep '1\([0-9]):\1.*\1$' prep5.txt

2016-2-5 linux基础学习11_第18张图片

2016-2-5 linux基础学习11_第19张图片


你可能感兴趣的:(正则表达式,描定)