深入浅出grep与正则表达式
一、什么是正则表达式
很可能我们经常会听到一些有经验的系统管理员告诉我们说:正则表达式非常重要。为什么说正则表达式非常重要呢?因为我们在使用文本编辑的时候或者编写shell脚本的时候经常会使用到查找、替换等工作。如果想把这些工作做的漂亮、完美、轻松就需要配合正则表达式来处理。那么什么是正则表达式呢?
简单的说,正则表达式就是处理字符串的方法,他是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让管理员轻易达到查找、删除、替换、某些特定字符串的处理程序。用一句简单的话概括就是:正则表达式是一类使用字符所书写的模式(pattern)。
二、正则表达式的用途
众所周知,对于系统管理员来说,每天要面对的数据信息多的无法想象,那么如何从这些海量的数据信息中找出我们需要的数据呢??如果只是用肉眼一行一行的查看显然是不现实的,此时系统管理员就需要通过正则表达式的功能来筛选出需要的数据信息。正则表达式对于系统管理员最广泛的用途就是清除服务器中的垃圾信息,例如清除邮件服务器中的垃圾邮件。
三、正则表达式的分组
正则表达式的字符串表示方式依照不同的严谨度而分为基本正则表达式与扩展正则表达式。扩展正则表达式除了简单的一组字符串处理之外,还可以做组的字符串处理。例如("或""|")操作。
基本正则表达式元字符:
注:”\”表示转义
^:锚定词首
$:锚定词尾
.:匹配任意单个字符
*:匹配任意长度的任意字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
\?:匹配紧挨在其前面的字符0次或1次
\{m,n\}:匹配其前面的字符至少m次至多n次
\<:锚定词首
>\:锚定词尾
\():分组
扩展正则表达式字符:
注:元字符同基本正则表达式
+:匹配其前面的字符至少一次
|:二选一例如:a|b 满足a或者b均可
四、grep简单介绍
grep:(Global Search Regular Exmpression and Printing 全面搜索正则表达式并把行打印出来)
grep的工作方式:它在一个或多个文件中搜索字符串模板(pattern)。搜索的结果被送到屏幕,不影响原文件内容。
语法:grep –[option] [--color=auto] “查找字符串” filename
--color=auto:找到的关键字自动添加颜色
-v:反向选取,只显示不符合模式的行
-o:只显示匹配到的字符串,而不是整个行
-A#:显示匹配到行时,顺带显示其后面的#行
-B#:显示匹配到行时,顺带显示其前面的#行
-C#:显示匹配到行时,顺带显示其前后的#行
-i:不区分大小写
-E:grep –E=egrep后接扩展的正则表达式
五、grep与正则表达式应用实例
注:系统环境Red HatEnterprise Llnux 6
实例中涉及到的管道命令不做详细解释
1.选出/etc/passwd文件中以字母。
#grep --color=ahto "^[ad]" /etc/passwd
2.选出/etc/passwd文件中以字符串nologin结尾的行。
#gerp --color=auto "nologin$" /etc/passwd
3.显示/etc/rc.d/rc.sysinit中符合形为“以任意单个字符n任意单个字符t结尾”模式的行。
#gerp --color=auto ".n.t$" /etc/rc.d/rc.sysinit
4.匹配字符a零次或一次。注:grep.txt文件自行创建
#gerp --color=auto "a\?b" grep.txt
5.找出/etc/passwd文件中的1位数或2位数或3位数。
#gerp --color=auto "\<[0-9]\{1,3\}\>" /etc/rc.d/rc.sysinit
6.显示/etc/rc.d/rc.sysinit中符合形为任意单个字符后面跟了个n,n后面有任意单个字符,而后是任意单个字符后面跟了个n,但后面的n之前的字符与前面的n之前的字符相同。
#gerp --color=auto "\(.n\).\1" /etc/rc.d/rc.sysinit
7.找出/stc/passwd文件中含有单词bin或sbin中的行。
#egerp --color=auto "\<bin\>|\<sbin\>" /etc/rpasswd #gerp -E --color=auto "\<bin\>|\<sbin\>" /etc/rpasswd
8.统计/etc/rc.d/rc.sysinit的空白行,非空白行,总行数。
#gerp "^$" /etc/rc.d/rc.sysinit | wc -l #gerp -v "^$" /etc/rc.d/rc.sysinit | wc -l #cat /etc/rc.d/rc.sysinit | wc -l
9.取出默认shell为bash,且其用户ID号最小的用户的用户名。
#gerp --color=auto "/bin/bash$" /etc/passwd | sort -n -t: -k3 head -1 | cut -d: -f1
10.匹配点分十进制IP地址。
模式(pattern):"\<([1-9]|[0-9][1-9]|1[0-9][0-9]|2[0-2][0-3])\.([0-9]|[0-9][1-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[0-9][1-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]|[0-9][1-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>"
ifconfig | egrep --color=auto "\<([1-9]|[0-9][1-9]|1[0-9][0-9]|2[0-2][0-3])\.([0-9]|[0-9][1-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[0-9][1-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]|[0-9][1-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>"
转载于:https://blog.51cto.com/dreamwolf/1248753
深入浅出grep与正则表达式相关推荐
- grep与正则表达式
grep与正则表达式 一.grep grep文本过滤工具 作用:文本搜索工具,可以指定内容对指定文本进行匹配搜索:打印匹配的行 由正则表达式字符及文本字符编写的过滤条件,来进行逐行匹配 -- colo ...
- grep及正则表达式
grep可以说是Linux系统当中的一个文本检索工具.在Linux系统当中,其中有两个核心的理念:一切皆文件.配置文件保存为纯文本的格式.既然是纯文本的格式,可以想象,有一个好的文本检索工具是多么必要 ...
- Linux grep命令,正则表达式
grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression ...
- shell编程三剑客之grep与正则表达式
shell编程三剑客之grep与正则表达式 一 grep工具 1.1 常用选项 1.2 选项解释 二 正则表达式 2.1 正则表达式的含义 2.2 正则表达式的应用场景 2.3 正则表达式名词解释 2 ...
- linux grep 正则匹配字符串,Linux grep与正则表达式详解
grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,本文主要给大家分享Linux grep与正则表达式的相关知识,感兴趣的朋友一起看看吧,希望能帮助到大家. grep ...
- Linux grep之正则表达式
文章目录 6.grep之正则表达式 1.自学书上的 2.课件上的 3.总结 6.grep之正则表达式 1.自学书上的 在正则表达式中,空格和其他字符没有什么区别. 正则表达式识别的字符包括:*[]^$ ...
- 正则表达式匹配linux时间,linux grep与正则表达式使用介绍
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...
- Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式...
本章Blog相关Linux知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户 ...
- linux grep 基本正则表达式与扩展正则表达式使用解析
成功的秘诀很简单=开始+坚持 接下来介绍grep和基本的正则表达式: 当大家需要从某个文本中,或者信息中检索数据时就要用上grep了 先介绍下grep的基本语法 grep [options] 'pat ...
最新文章
- mysql中括号_mysql进阶知识点,启动项、系统变量、字符集介绍!
- IO流中文件和文件夹的删除程序举例
- 常用 BUG 解决方法
- Fiori Elements - when is project webapp folder annotation.xml loaded
- DEBUG的参数说明
- BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换
- 扁平化女装shop商城模板
- mysql罏在十三_MySQL高级知识(十三)——表锁
- (47)VHDL实现8位奇偶校验电路(for loop语句)
- HDU1715 大菲波数【大数】
- androidsettitle方法_android去掉标题方法
- MATLAB_批量修改文件名称
- 20年前的网文:我彷徨在唯物主义和唯心主义之间
- Xmind中图标的导入和导出
- 面向对象设计,ORM,NHIBERNATE杂谈(有感)
- 计算机中人民币符号在哪儿,钱的符号电脑怎么打(人民币符号怎么输入)
- 如何写linux软件专利,Linux之父:软件专利和方法专利都挺扯淡
- 微信小程序实现点击按钮退出功能
- IP,域名,DNS,端口
- servu用户信息如何导出_购买1条人脸信息只需5毛钱!人脸识别智能锁如何坚守用户信息安全高地?...
热门文章
- win10有自带测试软件吗,使用windows10自带工具测试系统内存
- Docker(一):这可能是最为详细的Docker入门总结
- java分布式锁解决方案 redisson or ZooKeeper
- iOS 2D绘图详解(Quartz 2D)之概述
- hash算法_一致性hash算法简介
- python中execute函数_在python中函数的调用
- mysql $区别_mysql 与oracle区别
- 1、Hello World
- JS打印指定区域内容
- jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例