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

【Linxu学习008】grep和正则表达式

时间:2016-02-01 15:56:33      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:linux   bash   grep   正则表达式   regexp   

一、使用grep命令打印匹配的行

    grep命令是一个文本搜索命令,能够从指定的“源”搜索匹配串所在的行并将其打印到控制台。

    grep命令本身并没有什么特别需要注意的使用事项,但是由于其依赖于正则表达式,所以是一个非常复杂的命令,其重点也都在正则表达式上了。

    grep常用选项:

grep 
        --color    :将匹配到的所有字符都高亮显示
        -i        :忽略大小写
        -v        :显示所有没有匹配到的行
        -o        :只显示被匹配到的串

    关于正则表达式的详细使用说明在线文档:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html

    使用示例

kdyzm@kdyzm:~$ grep "kdyzm" /etc/passwd
kdyzm:x:1000:1000:kdyzm,,,:/home/kdyzm:/bin/bash
kdyzm@kdyzm:~$

二、正则表达式相关

    1.

.  
任意单个字符
*表示匹配其前面的字符任意次数
\?匹配其前面的字符次数一次或者零次
\{m,n\}匹配其前面的字符最少m次,最多n次
\{m,\}匹配其前面的字符最少m次
\{0,3\}匹配其前面的字符最多三次

锚定字符,后面出现的第一个字符必须在行首
$锚定字符,前面出现的第一个字符必须出现再行尾
^$空白行
[]匹配指定范围内的任意单个字符
[^]
匹配指定范围外的任意单个字符
\<其后面的字符必须作为单词的首部出现
\>其前面的字符必须作为单词的尾部出现
\b
可以使用\b代替\<或者\>
\(\)可以将内容分组,实现分组的重要作用就是能够很方便的实现后向引用

    2.一些有特殊含义的单词及其格式

[:alnum:]   [:cntrl:]   [:lower:]   [:space:]
[:alpha:]   [:digit:]   [:print:]   [:upper:]
[:blank:]   [:graph:]   [:punct:]   [:xdigit:]

三、正则表达式练习

    1.打印出所有使用/bin/bash的用户名列表

kdyzm@kdyzm:~$ grep "/bin/bash$" /etc/passwd | cut -d: -f1
root
kdyzm
user1
kdyzm@kdyzm:~$

    2.打印出所有使用/bin/bash同时其id最大的用户名

kdyzm@kdyzm:~$ grep "/bin/bash$" /etc/passwd | sort -r -n -t: -k3 
                | head -n 1 | cut -d: -f1
user1
kdyzm@kdyzm:~$

    

    


本文出自 “狂盗一枝梅的博客” 博客,请务必保留此出处http://kdyzm.blog.51cto.com/8316029/1740318

【Linxu学习008】grep和正则表达式

标签:linux   bash   grep   正则表达式   regexp   

原文地址:http://kdyzm.blog.51cto.com/8316029/1740318

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