码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 文本处理三剑客之grep   egrep

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

标签:linux 文本处理三剑客之grep   egrep

Linux 文本处理三剑客之grep   egrep

grep: Global search REgular expression andPrint out the line.

作用:文本搜索工具,根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行.

模式:由正则表达式的元字符及文本字符所编写的过元字符,其中正则表达示分基本正则表达式,和扩展正则正则表达式2

元字符不表示其字面意义,而用于表示通配或控制功能滤条件。元字符有下面一些

字符匹配:

    .:匹配任意单个字符

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

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

    [:alnum:]代表0-9  a-z A-Z

    [:alpha:]代表A-Z a-z

    [:digit:] 代表0-9

    [:lower:] 代表a-z

    [:upper:]代表A-Z

    [:space:] 任何会产生空白的字符,包括空格键[TAB]CR

次数匹配:(用与基本正则)

   *:任意次

   \?0次到1

   \+1次到多次

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

   \{m\}:精确匹配m

   \{0,n\}:至多n

   \{m,\}:至少m

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

位置锚定:

   ^:行首锚定,用在模式的最左侧

   $:行尾锚定,用在模式的最右侧

   \<\b: 词首锚定

   \> , \b:词尾锚定

   ^$:空白行

   \(\):分组, 小括号中的模式匹配到的内容,并保留在内在的变量中,

            \1:从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容

           \2: 从左侧起,第2个左括号,以及与之配对的右括号中间的模式所匹配到的内容

 

扩展正则有下面几个,用与支持egrep

     .:任意单个字符

    .*:匹配前一个字符0次到无穷次  

    []:范围内单个字符

    [^]:范围外单个字符             

    +: 1次到多次      

    ?:01

    {m}:

    {m,n}

    |:相当与或(or)方式,比如gd|good,表示是gd good

    ( ):找出群组字符串

    ( ):分组,小括号中的模式匹配到的内容,并保留在内在的变量中,

            \1:从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容

           \2: 从左侧起,第2个左括号,以及与之配对的右括号中间的模式所匹配到的内容

   ()+:多个群组的判断

 

我建议大家用alias grep  egrep 写成别名。可以写入~/.bashrc这个文件中,在执行source ~/.bashrc 来立即生效.这样就会有颜色显示。

alias grep=‘grep --color=auto‘

alias egrep=‘egrep --color=auto‘

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

                     OPTIONS 选项有--color=auto

                     -v:显示模式匹配不到行

                     -i:忽略大小写

                     -o:仅显示模式匹配的行

                     -q: 静默模式

                     -E:使用扩展正则式

                      -n:显示行号

 

作业练习:

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

   grep ‘bash$‘/etc/passwd

技术分享



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

 egrep ‘\b[0-9]{2,3}\b‘ /etc/passwd

技术分享


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

   netstat -ant | egrep ‘LISTEN[[:space:]]*$‘

     技术分享


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

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

技术分享


7:显示当前系统上rootcentos或者user1用户的默认shellUID (请事先创建这些用户,若不存在)

   egrep ‘^root|^centos|^user1‘/etc/passwd | cut -d: -f3,7

技术分享


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

    grep ‘\b[[:alpha:]_]\+\b()‘/etc/rc.d/init.d/functions  

技术分享


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

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

技术分享


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

 这个题 做不出来,就没写

本文出自 “centos6 运维学习” 博客,请务必保留此出处http://wskfnso.blog.51cto.com/4025557/1690763

Linux 文本处理三剑客之grep   egrep

标签:linux 文本处理三剑客之grep   egrep

原文地址:http://wskfnso.blog.51cto.com/4025557/1690763

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