一.什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表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. Elasticsearch(GEO)空间检索查询

    Elasticsearch(GEO)空间检索查询python版本 1.Elasticsearch ES的强大就不用多说了,当你安装上插件,搭建好集群,你就拥有了一个搜索系统. 当然,ES的集群优化和查 ...

  2. .NET Framework基本概念

    http://blog.csdn.net/T573029173/article/details/41730101 .NET是微软的新一代技术平台.对技术人员来说,想真正了解什么是.NET,须先了解.N ...

  3. win10 uwp 判断文件存在

    本文主要翻译http://stackoverflow.com/questions/37119464/uwp-check-if-file-exists/37152526#37152526 我们有多种方法 ...

  4. datagrid 列鼠标悬浮显示全部信息

    首次发表随笔,且是java新手,求不黑,可能在高手眼里好笑,嘿嘿1,样式设置超过字数限制显示省略号:<style type="text/css"> .datagrid- ...

  5. http服务详解(2)——httpd2.2的配置文件常见设置

    摘要:一个服务的配置文件非常重要,弄懂配置文件是熟练掌握服务的必要前提. 一.httpd-2.2常见文件介绍 (1)配置文件: 主配置文件尽量别改,改自己的子配置文件 /etc/httpd/conf/ ...

  6. 【转】地址空间、内核空间、IO地址空间

    http://blog.csdn.net/wuxinke_blog/article/details/8769131 有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核 ...

  7. MySql技术内幕之MySQL入门(2)

    MySql技术内幕之MySQL入门(2) 接上一篇. mysql> source create_member.sql; # 创建member表 Query OK, 0 rows affected ...

  8. 运行第一个Go Web框架

    GO 语言的web框架很多,相对来说, Beego 框架,入门简单,文档齐全(中文),功能强大,本文以Beego 示例. Beego提供了详细的开发文档:http://beego.me/docs/in ...

  9. asp.net在类库中使用EF 6.0时的相关配置

    前提:之前使用EF的配置都是直接使用NuGet安装在项目中,然后直接修改web.config中的connectionString,然后创建相关dbcontext直接使用就可以了.此次为直接将EF安装在 ...

  10. 关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复

    在laravel5.5中,可以根据控制器方法的参数类型,自动注入一个实例化对象,极大提升了编程的效率,但是相比较与Java的SpringMVC框架,功能还是有所欠缺,使用起来还是不太方便,主要体现在方 ...