您的位置:首页 > 其它

正则表达式及文本查找工具grep

2012-02-11 14:10 357 查看
正则表达式分基本正则表达式(bgrep)和扩展正则表达式(egrep)。

正则表达式是由元字符组合的式子,可以当做模式使用以匹配符合指定特征的字符串。而grep 能根据指定的模式,在一个或多个文件中将符合模式的字符串所在的行搜索出来。

grep -E 也就是与扩展正则表达式一样。

fgrep 是快速搜索,不支持正则表达式。

grep [options] pattern(模式一定要有)。

下面,先介绍一些grep使用到的元字符:

^pattern:行首锚定符,必须出现在行首。

pattern$:行尾锚定符,必须出现在行尾。

\<pattern:词首锚定符,必须出现在词首或串首。

pattern\>:词尾锚定符,必须出现在词尾或串尾。

.:匹配任意单个字符。

*:匹配此前的字符0到任意次。

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

?:匹配此前的字符0次或1次。

pattern \{m,n\}:匹配此前的字符至少m次,至多n次。

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

[^]:不包含指定范围在内的任意单个字符。

\( \):字符分组和引用。

接着,介绍一下grep的选项:

-v :不显示匹配模式的内容,只显示不匹配的内容。

-r :在目录中递归搜索文件。

-i :不区分大小写。

-A :匹配到行的下面多少行,后跟数字。

-B :匹配到行的上面多少行,后跟数字。

-C :匹配到行的上下多少行,后跟数字。

-o :只显示被模式匹配到的串本身,而非串所在的行。

最后,介绍几个例子:

(1):查找当前系统上名为user1的用户账户相关信息。

grep "^user1" 或 "user\<"

(2):查找当前系统上其用户账号密码最长使用期限为99999天的账号相关信息。

grep "[^:]*:[^:]*:[^:]*:[^:]*:99999:.*"

或者 grep "\(.*:\)\{4,\}99999".

(3):在/proc/meminfo 下查找以s开头不区分大小写的行。

grep -i ^s /proc/meminfo 或 grep ^[sS] /proc/meminfo 。

本文出自 “无辜de心碎” 博客,请务必保留此出处http://chenjiuling.blog.51cto.com/3057028/777342
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: