一.什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表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. c# gdi+输出成不同mime类型的图片

    /// <summary> /// 通过图片的mime类型得到相应的编码器 /// </summary> /// <param name="mimeType&q ...

  2. Jquery+Ajax限制查询间隔

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Jquery20150305.a ...

  3. 使用jquery.form.js文件进行文件上传

    本想着文件上传是一件挺简单的事,不过是获取文件地址保存到服务器而已,然而事实并非如此. 我信心满满的写下input type="file",alert input 的value,打 ...

  4. java中重载变长参数方法

    一.测试代码 package com.demo; public class Interview { public static void test(int i){ System.out.println ...

  5. 前端要革命?看我在js里写SQL

    在日新月异的前端领域中,前端工程师能做的事情越来越多,自从nodejs出现后,前端越来越有革了传统后端命的趋势,本文就再补一刀,详细解读如何在js代码中执行标准的SQL语句 为什么要在js里写SQL? ...

  6. MySql5.7安装及配置

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS ...

  7. Javascript常见浏览器兼容问题

    常见浏览器原生javascript兼容性问题主要分为以下几类: 一.Dom 1.获取HTML元素,兼容所有浏览器方法:document.getElementById("id")以I ...

  8. [ACdream]女神教你字符串——导字符串

    Problem Description 正如大家知道的,女神喜欢字符串,而在字符串中,女神最喜欢回文字符串,但是不是所有的字符串都是回文字符串,但是有一些字符串可以进行“求导”来变成回文字符串. 字符 ...

  9. es6总结

    主要包括let const,模板字符串,解构赋值,箭头函数,扩展运算符,Promise,类,import export等 一.let和const 1.let所声明的变量只在let所在的代码块内有效.l ...

  10. Caffe Ubuntu16.04 GPU安装