正则表达式基础

准备

(1)alias grep='grep --color=auto' 易于显示

(2)LC_ALL=C,字符集,设置环境变量,字符顺序

基础正则

1)^word  匹配以Word开头的内容 vi/vim 里^代表一行的开头

2)word$  匹配以Word结尾的内容 vi/vim 里$代表一行的结尾

3)^$    表示空行

#过滤空行,并显示行号

[root@wen data]# grep -n "^$" lrs.txt

2:

4:

6:

8:

#过滤掉所有空行不显示

[root@wen data]# grep -v "^$" lrs.txt

You're in a battle with

A bulletproof heart

You really got me, got me

A bulletproof heart.

4). 代表且只能代表任意一个字符

5)\ 转义符号,让特殊字符显示其原型 \$ \.

6)* 重复0个或多个前面一个字符,例 o* 匹配 没有o 有一个或多个 oo  oooooo……

7).* 匹配所有字符 延伸 ^.*以任意多个字符开头  .*$以任意多个字符结尾

点(.)含义总结

1.当前目录

2.使得文件生效 相当于source

3.隐藏文件

4.任意一个字符(grep正则)

#只显示匹配到的内容

[root@wen data]# grep -on "you" lrs.txt

9:you

12:you

8).[abc] 匹配字符集合内的任意一个字符[a-zA-Z],[0-9]

9).[~abc]  匹配不包含~后的任意一个字符的内容

~为去反,注意和中括号外面以……开头区别

[root@wen data]# grep "[~ot]" lrs.txt

10.a\{n,m\} 重复n到m次,前一个重复的字符 如果用egrep/sed -r 可以去掉斜线

a\{n,\}  重复至少n次,前一个重复字符 如果用egrep或sed -r 可以去掉斜线

a\{n\}  重复n次,前一个重复字符  如果用egrep/sed -r 可以去掉斜线

a\{,m\}  重复最多m次

扩展

11. +  表示 重复一个或一个以上 前面的字符(*是0或多个)

[root@wen data]# grep -E "on+" lrs.txt

So if you don't know how to

I'm not gonna break your fall.

12. ?  表示 0或一个 前面的字符(.是有且只有一个)

13. |  表示同时过滤多个字符串

root@wen data]# grep -E "3306|1521" /etc/services

mysql 3306/tcp # MySQL

mysql 3306/udp # MySQL

ncube-lm 1521/tcp # nCube License Manager

ncube-lm 1521/udp # nCube License Manager

14.() 分组过滤,后向引用

[root@wen data]# grep -E "g(la|oo)d" lrs.txt

glad

good

#POSIX字符类(了解)

[:lower:] 匹配小写(麻烦,直接用下面的例子)

root@wen data]# grep -E "[a-z]" lrs.txt

You're in a battle with

A bulletproof heart

You really got me, got me

A bulletproof heart.

#元字符

\b 单词边界 只过滤单词

[root@wen data]# grep -E "\byou\b" lrs.txt

So if you don't know how to

[root@wen data]# grep -E "you" lrs.txt

So if you don't know how to

I'm not gonna break your fall.

#三剑客grep总结

-a 在二进制文件中,以文本文件的方式搜索数据

-c 计算找到“搜索字符串”的次数

-o 仅显示出匹配grep的内容(用于统计出现在文中的次数)

-i 忽略大小写的不同,所有大小写视为相同

-n  匹配的内容在其行首显示行号

-v  反向选择,即显示没有“搜索字符串”内容的那一行

-E  扩展的grep ,即egrep

--color=auto  以特定颜色高亮显示匹配关键字

-C #除了显示匹配行外,显示该行前后的num行

-B #除了显示匹配行外,显示该行之前的num行

-A #除了显示匹配行外,显示该行之后的num行


正则表达式实战

一,将第一列与最后一列交换位置

[root@wen data]# tail /etc/passwd

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

abrt:x:173:173::/etc/abrt:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

mygirl:x:500:500::/home/mygirl:/bin/bash

fadewalk:x:501:501::/home/fadewalk:/bin/bash

[root@wen data]# tail /etc/passwd |sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp'  #第一个([^:])取非:开头的

/sbin/nologin:x:69:69:virtual console memory owner:/dev:vcsa

/sbin/nologin:x:173:173::/etc/abrt:abrt

/sbin/nologin:x:68:68:HAL daemon:/:haldaemon

/sbin/nologin:x:38:38::/etc/ntp:ntp

/sbin/nologin:x:499:76:Saslauthd user:/var/empty/saslauth:saslauth

/sbin/nologin:x:89:89::/var/spool/postfix:postfix

/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd

/sbin/nologin:x:72:72::/:tcpdump

/bin/bash:x:500:500::/home/mygirl:mygirl

/bin/bash:x:501:501::/home/fadewalk:fadewalk

二,取IP或数字

1.取数字

[root@wen ~]# ifconfig | sed -nr 's#^.*dr:(.*) B.*$#\1#gp'

192.168.59.130

[root@wen ~]# stat /etc/hosts

File: "/etc/hosts"

Size: 158 Blocks: 8 IO Block: 4096 普通文件

Device: 802h/2050d Inode: 40 Links: 2

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2017-10-11 20:22:15.436493668 +0800

Modify: 2010-01-12 21:28:22.000000000 +0800

Change: 2017-08-30 05:59:08.040858188 +0800

取出644

[root@wen ~]# stat /etc/hosts|sed -nr 's#^.*0(.*)/-rw.*$#\1#gp'

644

[root@wen ~]# stat /etc/hosts|sed -nr 's#^.*\(0(.*)/-rw.*$#\1#gp'

644

2.取IP

[root@wen data]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:E9:95:DD

inet addr:192.168.59.130  Bcast:192.168.59.255  Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fee9:95dd/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:6964 errors:0 dropped:0 overruns:0 frame:0

TX packets:4430 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:606332 (592.1 KiB)  TX bytes:489934 (478.4 KiB)

[root@wen ~]# ifconfig | sed -n '2s#^.*dr:##p'|sed 's# B.*$##g'

192.168.59.130

grep取IP

[root@wen ~]# ifconfig eth0 |grep "ddr:[0-9.]*"

inet addr:192.168.13.128  Bcast:192.168.13.255  Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fee9:95dd/64 Scope:Link

[root@wen ~]# ifconfig eth0 |grep -o "inet addr:[0-9.]*"

inet addr:192.168.13.128

[root@wen ~]# ifconfig eth0 |grep -o "inet addr:[0-9.]*"|grep -o "[0-9]*"

192

168

13

128

[root@wen ~]# ifconfig eth0 |grep -o "inet addr:[0-9.]*"|grep -o "[0-9.]*"

192.168.13.128

linux 正则表达式与实践的更多相关文章

  1. linux正则表达式企业级深度实践案例1

    linux正则表达式结合三剑客企业级实践: 1.取系统ip [root@redhat~]#  ifconfig  eth0 解答: 替换命令: sed  's#支持正则位置##g'  file 先取第 ...

  2. Linux 正则表达式_010

    Linux 正则表达式 标注:本教程只针对linux运维的三剑客命令awk,sed,grep正则表达式 什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法通过定义的这 ...

  3. Linux 正则表达式与文本处理器 三剑客

    Linux 正则表达式与文本处理器 三剑客 一.正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在linu ...

  4. Linux正则表达式与grep

    bash是什么 bash是一个命令处理器,运行在文本窗口中,并能执行用户直接输入的命令 bash还能从文件中读取linxu命令,称之为脚本 bash支持通配符.管道.命令替换.条件判断等逻辑控制语句 ...

  5. paip.java win程序迁移linux的最佳实践

    paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...

  6. 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置

    本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...

  7. Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式

    本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...

  8. linux正则表达式之-基础正则表达式(基于grep)

    linux正则表达式: 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,如:假设@代表123456,!代表abcde.通过定义的这些特殊符号的铺助,系统管理员就可以快速的过滤,替换或 ...

  9. 关于清晰讲解linux正则表达式的博文分享

    http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html  linux shell 正则表达式(BREs,EREs,PREs)差异比 ...

随机推荐

  1. 九个console命令调试JS

    下面九个console命令,可以帮助我们更方便地调试 常用的console命令,最常用的事console.log() 1 //常用的console命令,其中最常用的console.log() 2 co ...

  2. scrapy-redis源码浅析

    原文链接 前言 分析这个项目的源码原因是需要有去重过滤,增量爬取两个功能,而scrapy-redis项目已经帮我们实现了,想看看他是怎么实现的.这里只贴出部分主要代码,查看时请打开源码对照,笔记有点长 ...

  3. Jquery浅析

    目录 jquery 通过jquery改变标签字体颜色 jquery和js对象之间值转化 Jquery基本选择器 Jquery层级选择器 基本筛选器 操作类属性 模太框 表单筛选器 筛选器方法 设置多个 ...

  4. 将多个jpg文件以追加形式合并成一个文件_delphi教程 bmp 合并 http://www.west.cn/www/info/58058-1.htm

    将多个jpg文件以追加形式合并成一个文件_delphi教程 作者:网友供稿 点击:0 西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!云服务器 ...

  5. 【转载】Spring boot学习记录(二)-配置文件解析

    前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 Spring Boot使用了一个全局的配置文件application.prop ...

  6. Python3数据科学入门与实践学习教程

      整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关注下面几点: 1.为了追求精 ...

  7. tensorflow学习框架(炼数成金网络版学习记录)

    chapter1 #变量 import tensorflow as tf x = tf.Variable([1,2]) a = tf.constant([3,3]) #增加一个减法op sub = t ...

  8. Spring Security 03

    认证和鉴权 配置文件方式 <authentication-manager> <authentication-provider> <!-- 用户的权限控制 --> & ...

  9. Day7-----Python的序列类(有子类:元组类,列表类)

    序列类型 1.基本介绍: 序列类型是一种基类类型  ,既然被称为那就肯定是有道理的,关于序列 它有  正向  和  反向  两种序号,正向序号从零开始,反向序号从负一开始 a = '例如这个字符串' ...

  10. java中位运算和移位运算详解

    一.位运算 (1)按 位 与 & 如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0.首先我们看一下对正数的运算        分别看一下正数和负数的具体运算步骤 ...