一.什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表12345
通过正则表达式这些特殊符号,我们可以快速过滤、替换需要的内容。
linux正则表达式一般是以行为单位处理的。

二.为什么要学习正则表达式?
在工作中,我们做linux运维工作,时刻面对这大量的日志,程序,命令的输出。
迫切的学院过滤我们需要的一部分内容,甚至是一个字符串。

三.两个注意事项:
1.正则表达式的应用非常广泛,存在于各种语言中,PERL,PHP,JAVA等。
今天学习的就是linux的正则表达式,系统运维工作常用的正则表达式。
常用的正则表达式的命令为grep(egrep),sed,awk。
linux的三剑客很牛,要想三剑客玩的更好,那就一定离不开正则表达式。
2.linux正则表达式和我们在命令行中其他的命令使用的通配符是有本质区别的。

注意事项:
a.linux正则表达式是以行为单位处理的。、
b.设置别名显示更清晰:alias grep='grep --color=auto'
c.注意字符集,LC_ALL=C

四.linux正则表达式
1)常用参数:

-n :显示行号

-o :只显示匹配的内容

-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc?

-A :如果匹配成功,则将匹配行及其后n行一起打印出来

-B:如果匹配成功,则将匹配行及其前n行一起打印出来

-C:如果匹配成功,则将匹配行及其前后n行一起打印出来

--color

-c:如果匹配成功,则将匹配到的行数打印出来
-E :等于egrep,扩展
-i :忽略大小写
-v :取反,不匹配
-w:匹配单词

2). 代表且只能代表任意一个字符。(当前目录,加载文件)

3)\ 转义字符,让有特殊身份意义的字符,脱掉马甲,还原原型。
例如: \. 只表示小数点,还原原始小数点的意义。

4)* 重复0个或多个前面的一个字符。不代表所有了。

5).* 匹配所有的字符。 ^.*任意多个字符开头。

6) [abc] 匹配字符集合内任意一个字符[a-z]

7)[^abc] ^在中括号里面表示非,不包含a或b或c。

8){n,m} 重复n到m次,前一个字符
{n,} 至少n次,多了不限
{n} N次
{,m}
注意:grep要对{转义} \{\},egrep(grep -E)不需要转义
基础的正则就学完了
grep命令
-V 排除匹配的内容
-E 支持扩展的正则表达式
-i忽略大小写
-o 只输出匹配的内容
--color=auto 匹配的内容显示颜色
-n 在行首显示行号

sed
s替换
g全局
- i修改文件
-n取消默认输出
p 打印内容
sed -n 's#\(ddd\)\(ffff\)#\1\2#g' 同样适合grep。
ifconfig,

输出ip和广播:
[root@localhost ~]# ifconfig eth0|grep "net add"|sed -n 's#^.*dr:\(.*\) Bcast:\(.*\) Ma.*$#\1\2#gp'

192.168.0.103 192.168.0.255

附:

1.设置别名:

[root@localhost ~]# alias grep='grep --color=auto'
若要永久生效编辑:
[root@localhost ~]# vi /etc/profile


生效[root@localhost ~]# source /etc/profile

2.练习题:

ifconfig eth0:

inet addr:192.168.0.103 Bcast:192.168.0.255 Mask:255.255.255.0
目标:192.168.0.103目标之前的内容 " inet addr:" 就用^.*addr:
目标结尾的内容 "Bcast:192.168.0.255 Mask:255.255.255.0"Bc.*$
①:提取IP地址:
[root@localhost ~]# ifconfig eth0|grep "inet addr"|sed 's#^.*addr:##g'|sed 's#Bc.*$##g'
192.168.0.103

②:提取IP地址和广播地址:

[root@localhost ~]# ifconfig eth0|grep "net add"|sed -n 's#^.*dr:\(.*\) Bcast:\(.*\) Ma.*$#\1\2#gp'
192.168.0.103 192.168.0.255

Linux运维正则表达式之grep的更多相关文章

  1. linux运维基础之跟我一起学正则表达式(一)

    正则表达式 ### 二, 1) 什么是正则表达式 正则表达式又称为规则表达式 正则表达式是一个计算机的一个概念 正则表达式为了处理大量的文本|字符串而定义的一套规则和方法,通常被用来检索,替换那些符合 ...

  2. Linux运维工程师成长必经之路

    本路线图是从0基础开始,全方位由浅入深,按照多年Linux培训经验和优秀教学方法制定的学习思路和学习方法,路线图包括初级入门.中级进阶.高级提升和资深冲刺四个阶段,每阶段对应着不同优秀的课程和学习方法 ...

  3. 如何掌握并提高linux运维技能

    初中级Linux运维人员们系统学习并迅速掌握Linux的运维实战技能.学习路线大纲如下: 入门基础篇 系统运维篇 Web运维篇 数据库运维篇 集群实战篇 运维监控篇 第一篇:Linux入门(安装.配置 ...

  4. linux运维工程师面试题收集

    面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...

  5. 高级Linux运维工程师必备技能(扫盲篇)

    高级Linux运维工程师必备技能(扫盲篇) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的 ...

  6. Linux运维工程师必学必备的8项IT技能

    如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...

  7. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  8. 让“懒惰” Linux 运维工程师事半功倍的 10 个关键技巧!

    好的Linux运维工程师区分在效率上.如果一位高效的Linux运维工程师能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间 ...

  9. 详解Linux运维工程师

    运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...

随机推荐

  1. jquery层次选择器:空格 > next + nextAll ~ siblings

    全栈工程师开发手册 (作者:栾鹏) jquery系列教程1-选择器全解 jquery层次选择器 jquery层次选择器,包括空格.>.next.+.nextAll.~.siblings等函数或表 ...

  2. 微信小程序- 生成二维码

    wx.request({ // 获取token url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential', ...

  3. JavaEE 对象的串行化(Serialization)

    什么情况下需要序列化 a)当你想把的内存中的对象写入到硬盘的时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候:再稍微解释一下:a)比如说你的内存不够用了,那计算机就要 ...

  4. 容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)

    背景 在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry.因此,docker容器中需要安装docker服务.但在启动容器的时候,却报错: can' ...

  5. (转)利用JConsole工具监控java程序内存和JVM

    转自:http://www.cnblogs.com/luihengk/p/5446279.html 一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29 ...

  6. Spark: Job in detail

    1.sc.runJob -> dagScheduler.runJob -> submitJob 2.DAGSchedueler::submitJob 会创建 JobSubmitted 的 ...

  7. 大道至简第一章读后感Java伪代码

    //一.愚公移山 /*原始需求 惩山北直塞,出入之迁也. 项目沟通的方式 聚室而谋 项目目标 毕力平险,指通豫南,达于汉阴 人员组成 愚公,子孙荷担者三夫,邻人遗男 技术方案 叩石垦壤 簸萁运与渤海之 ...

  8. CSS基础:基础和语法

    **CSS语法** CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明.选择器通常是您需要改变样式的 HTML 元素.```selector {declaration1; declarati ...

  9. 微信公众号开发(三)获取access_token

    微信公众号开发(三)获取access_token 1.说明 access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.acce ...

  10. [译]ASP.NET Core 2.0 视图引擎

    问题 如何在ASP.NET Core 2.0中使用Razor引擎来创建视图? 答案 新建一个空项目,修改Startup.cs,添加MVC服务和请求中间件: public void ConfigureS ...