学习Linux心得笔记(16)-grep及正则表达式2

作者: sxdgy 分类: linux 发布时间: 2017-06-22 17:27

1、grep使用正则表达式定义的模式来过滤:

grep [选项] 模式 [文件...]

    -E 使用扩展正则表达式,也和直接使用egrep命令

    -A 1 显示匹配行的后2行内容

    -B 2 显示匹配行的前2行内容

    -C 3 显示匹配行的前后2行内容

2、扩展正则表达式元字符匹配:

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

3、扩展正则表达式次数匹配:

    * 匹配其前面的字符任意次
    ? 匹配其前面的字符1次或0次
    + 匹配其前面的字符至少1次
    {m,n} 匹配至少m次,至多n次

4、扩展正则表达式位置锚定:

    ^ 锚定行首,此字符后面的任意内容必须出现在行首
    $ 锚定行尾,此字符前面的任意内容必须出现在行尾
    \<或\b 锚定词首,其后面的任意字符必须作为单词首部出现
    \>或\b 锚定词尾,其前面的任意字符必须作为单词的尾部出现

5、扩展正则表达式分组:

    () 分组,把括号里面当做整体
    \1,\2,\3,... 引用第n个成对括号内的内容

6、扩展正则表达式或者:

 | 或者,如C|cat表示C或cat

7、相关练习:

a.显示所有以数字结尾且文件名中不包含空白的文件;

    ls *[^[:space:]]*[0-9]

b.找出/boot/grub/grub.conf文件中1-255之间的数字;

    \<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

c.找出网络配置文件中的iP地址;

    ifconfig | egrep '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

d.找出网络配置文件中的iP地址(改进);

    ifconfig | egrep --color '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'