一.什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表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. This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案

    1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...

  2. 为啥REST如此重要?

    摘要:REST——表征状态转移,由于REST模式的Web服务更加简洁,越来越多的Web服务开始采用REST风格设计和实现.例如,Amazon.com提供接近REST风格的Web服务进行图书查找:雅虎提 ...

  3. springMvc+hibernate的web application的构建

    闲来没事,想整理下一些知识. 这篇文章是关于spring的web程序的搭建,有什么不对的地方希望大家批评指正. 首先我们要了解什么是spring,这里可能很多大家也都明白,无非是一个管理对象的一个容器 ...

  4. SQL 表结构操作

    数据库知识总结(表结构操作) 1.创建表Scores 1 create table Scores --表名 2 (Id int identity(1,1) primary key,--设置主键,并且行 ...

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

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

  6. Hibernate逆向代码问题

    问题描述 使用hibernate tools 插件生成pojo代码非常方便快捷,但是我今天使用的时候发现,在eclips安装jboss插件后,找不到Hibernate Code Generation ...

  7. Tomcat 笔记-配置域名

    编辑/etc/hosts文件,添加域名: 127.0.0.1 localhost 127.0.1.1 ubuntu # The following lines are desirable for IP ...

  8. LINUX 笔记-MOUNT

    mount [-t vfstype] [-o options] device dir -o options: 主要用来描述设备或档案的挂接方式 1)loop:用来把一个文件当成硬盘分区挂上系统 2)r ...

  9. Akka(32): Http:High-Level-Api,Route exception handling

    Akka-http routing DSL在Route运算中抛出的异常是由内向外浮出的:当内层Route未能捕获异常时,外一层Route会接着尝试捕捉,依次向外扩展.Akka-http提供了Excep ...

  10. Java基础总结--常用类以及包的访问权限

    -----Object---所有类的根类1.怎么得到的:通过对所有对象不断的向上抽取共性,具备所有对象的共性的东西2.常用的方法* equals(Object obj):比较两个对象的引用是否指向同一 ...