详解grep、egrep及正则表达式
一、grep、egrep命令格式介绍:
grep和egrep是关于文本处理的命令,给定选取条件,只显示符合条件的行。
--color=auto:匹配到的文本自动高亮显示默认给红色 -v:反向选取,只显示不符合模式的行 -o:只显示被模式匹配到的字串,而不是整个行 -i:匹配时不区分字符的大小写 -A n:显示匹配到的行时,顺带显示其后面的n个行 -B n:显示匹配到的行时,顺带显示其前面的n个行 -C n:显示匹配到的行时,顺带显示其前面和后面的n个行 -E:匹配使用扩展的正则表达式 (注:下面会有详细介绍) -r;递归搜索匹配到的文本 egrep常用的选项和grep常用的选项相同,并且grep -E 相当于egrep pattern表示过滤模式,使用正则表达式来描述选择条件,下面详细介绍正则表达式的有关内容; 三、正则表达式
正则表达式分为两种:基本正则表达式和扩展正则表达式 3.1、基本正则表达式 ^:锚定行首符合条件的内容,用法格式"^pattern" $:锚定行尾符合条件的内容,用法格式"pattern$" ^$:表示空白行 .:匹配任意单个字符 *:匹配紧挨在其前面的字符任意次: ?:匹配紧挨在其前面的字符0次或1次; {m,n}:匹配其前面的字符至少m次,至多n次 {0,n}:至多n次:0-n次 {m,}:至少m次 .*:匹配任意长度的任意字符 []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 &;:锚定词首,用法格式:&;pattern &;:锚定词尾,用法格式:pattern&; &;pattern&;:单词锚定 ():分组:用法格式:(pattern) 3.2、 扩展正则表达式 .:任意单个字符 []:指定范围内的任意单个字符 [^]:指定范围外的任意单个字符 *:匹配前面的字符任意多次 +:匹配前面的字符至少一次 ?:匹配前面的字符0次或一次 {m,n}:至少m次,至多n次; ():分组,支持引用1,2 a|b;二选一,或者,a或者b &;:锚定词首 &;:锚定词尾 ^:锚定行首 $:锚定行尾 单词锚定和行首行尾锚定和基本正则表达式一样 注:如果想详细了解正则表达式元字符的相关说明可以通过 man regex进行查看
[:digit:]:所有数字,相当于0-9 [:lower:]:所有的小写字母 [:upper:]:所有的大写字母 [:alpha:]:所有的字母 [:alnum:]:相当于[0-9a-zA-Z] [:space:]:空白字符 [:punct:]:所有标点符号 四、实例讲解
4.1、基础简单实例
#cat test.txt 1 12 123 adc abc abc def ghi a 2 33 45 1 asd da a abcdab abcdba 12abcd12 mnlanliannm 1a bc a1 aab aaac aabaaacaaaad 注:grep用了命令别名:# alias grep='grep --color=auto' 1.匹配以a开头的行 2.匹配以c结尾的行 3.匹配a后面跟任意单个字符 4.匹配a出现任意次数 5.匹配a后面跟任意一个字符出现任意次数 6.匹配一个数字 7.匹配一个数字结尾的行 8.匹配一个数字开头的行 9.匹配一位数 10.匹配非数字行 11.匹配一个数字或0个数字的行 12.匹配一个或0个数字开头的行 13.匹配一个或0个数字开头并结尾的行 14.匹配至少出现三次的数字的行 15.匹配至多出现两次的数字的行 16.匹配字母2次行 17.一个或两个字母进行词首锚定的行 18.匹配一或两次字母,进行词尾锚定的行 19.匹配一到两个字母的单词行 20.显示一行中包含12和12之间的内容 21.显示一行中包含mn和nm之间的内容 4.2、综合实例 1.显示/proc/meminfo文件中以不区分大小的s开头的行; 2.显示/etc/passwd中以nologin结尾的行; 3、显示/etc/rc.d/rc.sysinit中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行; 4、显示/etc/rc.d/rc.sysinit中符合形为“任意单个字符n任意字符任意单个字符n”模式的行;即任意单个字符后面跟了个n,n后面有任意长度的任意字符,而后是任意单个字符后面跟了个n,但后面的n之前的字符要与前面的n之前的字符相同;
说明:本博文仅根据自己所学知识归纳总结和实现,望对初学者有所帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
- 在Swift中从nib加载UIView
- c# – Resharper重命名字段
- 解决在log4net 中使用sqlite 无法加载“SQLite.Interop.066
- OCP-052考试题库汇总(35)-CUUG内部解答版
- TDD 实践之路 - TTCMS完全构建历程(DELPHI)
- 解决FlashPaper转PDF出现旋转问题的方法
- ajax内容总结
- c# – 服务有时仅抛出No’Access-Control-Allow-Origin’标
- 在flash builder 4.6中使用ant编译项目的详细过程