您的位置:首页 > 运维架构 > Linux

linux下grep文件内容搜索工具及基本正则表达式详解

2016-04-12 11:10 806 查看
linux下grep文件内容搜索工具及基本正则表达式详解grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本,
并将符合模式的文本行显示出来。
格式:grep [选项] 匹配条件 文本名称
选项: -i: 忽略大小写
-v: 显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
--color: 搜索出来文件高亮度显示
-A: 匹配指定行的下几行
-B: 匹配指定行的上几行
-C: 匹配指定行的上下几行
-E: 扩展正则表达式 相当于egrep
正则表达式:Regular Expression, 简称REGEXP

注意:\是脱义符,防止与bash冲突,脱去其原有的意思
元字符
.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
例如:特殊字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]
匹配次数

*: 匹配其前面的字符任意次
.*: 任意长度的任意字符
\?: 匹配其前面的字符1次或0次
\{a,d\}:匹配其前面的字符至少a次,至多d次
例如:\{1,\} 表示:前面字符至少匹配1次,最多不限
\{0,6\} 表示: 前面字符至少匹配0次,最多6次
举例说明:显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行
grep '^[[:space:]\{1,\}]' /boot/grub/grub.conf



位置锁定或叫锚定

^: 锁定行首,此字符后面的任意内容必须出现在行首
举例说明:显示/etc/passwd文件中r开头的行
grep '^r' /etc/passwd
$: 锁定行尾,此字符前面的任意内容必须出现在行尾
举例说明:显示/etc/passwd文件中bash结尾的行
grep 'bash$' /etc/passwd
^$: 表示 空白行
\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现
举例说明:显示/etc/passwd文件中以root开头并以root词结尾的行
grep '^root\>' /etc/passwd



分组:\(\)
例如:\(mn\)* 表示匹配任意mn组合字符
后向引用
\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
\2: 引用第二个左括号以及与之对应的右括号所包括的所有内容
\n: 引用第n个左括号以及与之对应的右括号所包括的所有内容
举例说明:显示/etc/inittab文件中以一数字开头同时以一个与开头相同数字结尾的行
grep '^\([0-9]\).*\1$' /etc/inittab



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