《linux之grep正则表达式》由会员分享,可在线阅读,更多相关《linux之grep正则表达式(6页珍藏版)》请在金锄头文库上搜索。
1、grep(正则表达式):Global Research,文本查找根据模式,去搜索文本,并将符模式的文本行显示出来。pattern(模式):文本字符和正则表达式的元字符组合而成匹配条件使用格式:选项 + 模式 + 文件 -i:忽略大小写 -color:高亮需要查找的文件 -v:反向查找,显示没有被模式匹配到的行-o:只显示被匹配到的字符串*:任意长度的任意字符?:任意单个字符::正则表达式:REGular EXPression,简写:REGEXP元字符:.:匹配任意单个字符rootlocalhost /# grep -color r.t /etc/passwdroot:x:0:0:root:/r
2、oot:/bin/bash:匹配指定范围内的任意单个字符rootlocalhost zhengze# grep :0-9: zhengab12df12b1c1rootlocalhost zhengze# grep :3: zhengsad1322sd:匹配指定范围外的任意单个字符字符集合::digit::数字 :lower::小写字母 :upper::大写字母 :punct::标点符号 :space::空白字符 :alpha::字母 :alnum::字母和数字匹配次数:(贪婪模式,尽可能长的去匹配)*:匹配其前面的字符任意次 a, b, ab , aab, acb, abb, amnba*b
3、能匹配的:b, ab, aab a出现任意次(包括0次)后跟着的是b .*:任意长度的任意字符 a.*b 能匹配的:ab,aab,acb,amnbrootlocalhost grep# grep a*b /lz1200/grep/abcbabaabacbadbamnbrootlocalhost grep# grep a.b /lz1200/grep/abcaabacbadbrootlocalhost grep# grep a.*b /lz1200/grep/abcabaabacbadbamnb 以a开头,以b结尾,中间任意长度任意字符?:匹配其前面的字符1次或0次a?b能匹配的:b, ab,
4、aab, adb, amnb 不是整行匹配,是部分匹配.grep是部分匹配,但显示是整行rootlocalhost grep# grep -color a?b /lz1200/grep/abcbabaabacbadbamnbm,n:匹配其前的字符至少m次,至多n次 1,:至少1次,最多不限 0,3:至少不限,至多3次 grep a1,3 文件 :前面的a最好1次,最多3次,后面跟b grep a.1,3 文件 :a和b之间至少1个,最多3个rootlocalhost grep# grep -color a1,3b /lz1200/grep/abcabaabrootlocalhost grep#
5、 grep -color a.1,3b /lz1200/grep/abcaabacbadbamnb位置锚定:锚定行首,此字符后面的任意内容必须出现在行首 grep r.t/etc/passwdrootlocalhost zhengze# grep he zhenghello wordhe love his lover.$:锚定行尾,此字符前面的任意内容必须出现在行尾grep b.h$ /etc/passwdrootlocalhost zhengze# grep his$ zhengshe love his$:空白行以一个数字结尾的行:grep :digit:$ /etc/inittab 以一个
6、空白字符在前面,数字结尾的行: grep :space:digit:$ /etc/inittab或b:锚定词首,其后面的任意字符必须作为单词首部出现rootlocalhost grep# grep -color 或b:锚定词尾,其前面的单词必须作为单词尾部出现rootlocalhost grep# grep -color root /lz1200/grep/testthe hello not is rootthere is mnrootroot is gaoji找root这个单词 : rootlocalhost grep# grep -color /lz1200/grep/testthe he
7、llo not is rootroot is gaoji():分组 ():(ab)* ab 是一个整体,ab可以出现n次。rootlocalhost grep# grep -color (ab) /lz1200/grep/abcabaab后向引用,1:第一个左括号以及与之对应的右括号所包括的所有内容rootlocalhost grep# grep -color (l.e).*1 /lz1200/grep/fenzuHe love his lover.He like his liker. /前面匹配了什么,后面就引用什么grep(0-9).*1$ /etc/inittab 中间出现任意字符与结尾
8、字符相同的行 2: 3:grep l.e*l.e文件 练习:1. 查找当前系统上名字为hive(必须出现在行首)的用户的账号的相关信息,文件为/etc/passwdrootlocalhost zhengze# grep hive /etc/passwd |cut -d: -f35000rootlocalhost zhengze# id -u hive5000rootlocalhost zhengze#2. 分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式。rootlocalhost zhengze# grep (0-9).
9、*1$ /123/zhengze/zheng abc123sdf1 ?11:1:wait:/etc/rc.d/rc 113:3:wait:/etc/rc.d/rc 314:1:wait:/etc/rc.d/rc 13. 找出某文件中的,1位数,或位数:4. 找出zheng命令结果中的1-255之间的整数:rootlocalhost zhengze# egrep -color /123/zhengze/zheng1位数| 2位数 |3位数100-199|以2开头至25581613424512.3445.67 以单词为单位查找REGEXP:REGular EXPression 正则表达式: 它里面
10、的字符很可能并不表示其本身的意义,而是用作通配、锚定等其他用途。Basic REGEXP:基本表达式Extended REGEXP:扩展表达式正则表达式是计算机智能化的重要手段或途径。基本表达式:.:任意单个字符:指定范围内的单个字符:指定范围外的字符次数匹配:*:匹配其前的字符任意次,?:匹配其前的字符0或1次m,n:匹配其前的字符至少m次,至多n次.*:任意长度的任意字符锚定::锚定行首$:锚定行尾$:空格,b:锚定词尾():分组1,2,3:grep:使用基本正则表达式定义的模式来过滤文本的命令。 -i:忽略字符大小写 -v:反向匹配 -o:显示字符串 -color:高亮 -E:使用扩展正
11、则表达式 -A#: 匹配到指定内容后显示并加(#表示后面跟几行)显示。rootlocalhost zhengze# grep -A 1 good /123/zhengze/zhenggoodhive -B#:匹配到指定内容后显示并加(#表示前面跟几行)显示。rootlocalhost zhengze# grep -B 1 good /123/zhengze/zhenghello wordgood -C#:匹配到指定内容后显示并加(#表示前后面跟几行)显示。rootlocalhost zhengze# grep -C 1 good /123/zhengze/zhenghello wordgood
12、hivePatteern(模式):由字符和正则表达式的元字符组合起来过滤文本的过滤条件。扩展正则表达式: 字符匹配: . 与正则表达式相同 次数匹配:*: ?: 相同,+:匹配其前面的字符至少1次,(不同之处)m,n:不用加反斜线()(不同之处)位置锚定: 与正则表达式相同 $ 分组: ():真正分组,不用加反 或者: |:or,或者 C|cat :整个左边,整个右边rootlocalhost zhengze# grep -E C|cat /123/zhengze/zhengcatCatCChinarootlocalhost zhengze# grep -E (C|c)at /123/zhengze/zhengcatCat grep -E=egrep 查IP地址:rootlocalhost conf# grep Lo Config.xml|egrep -color -o (.)3192.168.12.10Egrep:扩展表达式 fgrep:不支持正则表达式,执行速度快