码迷,mamicode.com
首页 > 其他好文 > 详细

20150827-grep及正则表达式学习

时间:2015-09-02 02:19:49      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:表达式   用户   

一、总结grep的使用方法及实例展示

基本用法:grep是作为一种文本搜索工具,根据用户指定的过滤条件(由正则表达式的元字符及文本字符所编写的)逐行搜索目标文本并显示匹配到的行

          格式:grep [OPTIONS] PATTERN [FILE...]:

常用选项:

            --color=auto:对匹配到的串做高亮显示;
            -v:显示模式匹配不到行;
            -i: 忽略字符大小写;
            -o: 仅显示能够被模式匹配到的字符串;
            -q: 静默模式;
            -E:使用扩展的正则表达式;

基本正则表达式的元字符:

        字符匹配:

                          .:匹配任意的单个字符

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

                         [^]:不匹配指定范围内的任意字符

                         [:lower:]:匹配小写字母

                         [:upper:]:匹配大写字母

                         [[:digit:]]:匹配数字

                         [[:alnum:]]:匹配数字和大小写字母

                         [[:space:]]:匹配所有空格字符

                         [[:punct:]]:匹配标点符号

       次数匹配:用在需要被指定其次数的字符后面;

                  *:表示其前面的字符可以出现任意次;

                   \?:表示其前面的字符出现0次或1次;

                   \+:至少一次;

                  \{m\}:精确指定出现的次数为m次;

                  \{m,n\}:前面的字符至少m次至多n次 [m,n]

                                   \{0,n\}:至多n次;
                                   \{m,\}:至少m次;

         .*: 匹配任意长度的任意字符;

         位置锚定:

                         ^:行首锚定;用于模式的最左侧;(例如行收为bash的:^bash)

                         $:行尾锚定;用于模式的最右侧;(例如行尾为bash的:bash$)

                         \<, \b: 字段首锚定;用于表示单词的模式的左侧;
                         \>, \b:字段尾锚定;用于表示单词的模式的右侧;
           ^$: 空白行;

            分组:\(\)

                分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...
                    \1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;
                     后向引用:使用变量引用前面\b的分组括号中的模式所匹配到的字符;

    

 

习题:

3、显示/etc/passwd文件中以bash结尾的行

grep ‘bash$’ /etc/passwd

技术分享

4、显示/etc/passwd文件中的两位数或三位数

grep –color=auto ‘\b[[:digit:]]\{2,3\}\b’ /etc/passwd

技术分享

 

5、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

netstat  –tan  |  grep  ‘LISTEN[[:space:]]*$’

技术分享

6、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

useradd bash  。useradd testbash  。  useradd  basher  。 useradd -s /sbin/nologin  nologin

grep ‘^\(\b[[:alnum:]]\+\b\).*\1$’ /etc/passwd

技术分享

 

7、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

grep -E ‘^root|^centos|^user1‘ /etc/passwd|cut -d: -f1,3,7

技术分享

8、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

技术分享

9、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名

技术分享

技术分享

10、找出ifconfig命令执行结果中1-255之间的数字

技术分享

20150827-grep及正则表达式学习

标签:表达式   用户   

原文地址:http://5489884.blog.51cto.com/5479884/1690566

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!