一.什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表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. 学习笔记之09小练习题(js:从小到大输出三个任意数,查成绩,相亲题,查体重,一元二次方程求根)

    <script type="text/javascript"> /*第一题.输入三个整数,x,y,z,最终以从小到大的方式输出. 注意小点:1 字符串的拼接是用+,数学 ...

  2. AVPlayer缓存实现

    没有任何工具能适用于所有的场景,在使用AVPlayer的过程中,我们会发现它有很多局限性,比如播放网络音乐时,往往不能控制其内部播放逻辑,比如我们会发现播放时seek会失败,数据加载完毕后不能获取到数 ...

  3. c++中vector的pair与make_pair的使用,双关键字排序

    #include <vector> #include <iostream> #include <algorithm> using namespace std; bo ...

  4. 解析 .Net Core 注入 (1) 注册服务

    在学习 Asp.Net Core 的过程中,注入可以说是无处不在,对于 .Net Core 来说,它是独立的一个程序集,没有复杂的依赖项和配置文件,所以对于学习 Asp.Net Core 源码的朋友来 ...

  5. C#使用互斥量(Mutex)实现多进程并发操作时进程间的同步操作(进程同步)

    本文主要是实现操作系统级别的进程同步的代码及测试结果,代码经过测试,可直接使用,也可供参考. 承接上一篇博客的业务场景[C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题]. 随着服务进 ...

  6. Oracle学习笔记之游标详解

    游标 游标存在意义:解决"select *"返回空.多行记录问题,但凡select,就可能多行结果集,也就需要用游标. 游标分4步走:cursor.open.fetch.close ...

  7. LESS IS MORE

    学习完css部分,相信大家对通过css进行DOM元素的样式操作已经非常熟悉,也可以通过css的语法进行页面显示效果的添加和修改.如果你们对css报以崇高敬意,感觉它拯救了你的整个网页的话,其实你正在犯 ...

  8. 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject

    本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...

  9. bootstrap select多选

    1.页面效果 <div class="form-group"> <div class="col-md-2 control-label"> ...

  10. LeetCode 48. Rotate Image(旋转图像)

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...