正则表达式基础

正则表达式正则表达式   

元字符:       

.       点表示任意单个字符 最少一次       

\w      匹配字母、数字、下划线、或汉字。       

\s      匹配任意空白字符       

\d      匹配数字       

\b      匹配字符的开始或结束       

^       匹配首字符       

$       匹配末尾字符       

\       转义字符   

反义:       

\W      匹配字母、数字、下划线、或汉字。       

\S      匹配任意空白字符       

\D      匹配数字       

\B      匹配字符的开始或结束       

[^n]    匹配除了n的字符   

限定符:       

*       重复任意次       

+       至少一次       

?      重复0次或1次       

{n}     重复n次       

{n,}    至少重复n次,无上线++ {,n} 至多重复n次,最少0次 (不重复)       

{n,m}   至少重复n次,至多重复m次。(字符重复n到m次)       

[1-9]   重复指定范围内的字符    贪婪与懒惰模式:       

*?     匹配任意字符(尽量少的次数)       

+?     重复一次或多次(尽量少的次数)       

??      重复0次或1次(尽量少的次数)       

{n,m}?  重复n到m次(尽量少的次数)       

{n,}?   至少重复n次(尽量少的次数)

高级进阶:    捕获:        (exp)        

匹配括号里的字符(串),并自动保存到自动命名的组里       

(?<name>ex)  匹配ex,并捕获文本保存到名字为name的组里       

(?:exp)      匹配exp 不捕获文本,也不匹配组号   

零宽断言:        (?=exp)       匹配exp前面的位置       

(?<=exp)      匹配exp后面的位置       

(?<!exp)      匹配后面非exp的位置       

(?<!exp)      匹配前面非exp的位置       

shell不支持零宽断言

实例:

1. 取出IP地址的方法 

a.

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’|sed ‘s/^.*addr://g’|sed ‘s/B.*//g’ 192.168.210.128  

正则匹配的秘籍: 匹配目标之前的内容时,用“^.*”任意字符开头,结尾给出具体字符, 例如:

取IP

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’          inet addr:192.168.210.128  Bcast:192.168.210.255  Mask:255.255.255.0

匹配目标之后的内容时,用“.*$”任意字符结尾,开头给出具字符。

[root@yanghua shiyan]#  ifconfig eth0|grep ‘inet addr’|sed ‘s/^.*addr://g’ 192.168.210.128  Bcast:192.168.210.255  Mask:255.255.255.0
 b.

[root@yanghua shiyan]# ifconfig eth0|sed -rn ‘s/^.*r:(.*)  Bc.*/\1/p’ 192.168.210.128 此处用到了Sed的高级用法:捕获功能 (exp)         匹配括号里的字符(串),并自动保存到自动命名的组里 但是要注意格式:

sed -n -r s/(exp)正则/默认的组’\1 \2’/p’命令’
 c.

sed超复杂用法:(仅供参考)

[root@yanghua shiyan]# ifconfig eth0|sed -rn ‘s/^.*r:([0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3})  Bc.*/\1/p’ 192.168.210.128
 实战:取出IP和网关

[root@yanghua ~]# ifconfig eth0 eth0      

Link encap:Ethernet  HWaddr 00:0C:29:14:DD:D3   inet addr:192.168.210.128  Bcast:192.168.210.255  Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe14:ddd3/64 Scope:Link UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 RX packets:3494 errors:0 dropped:0 overruns:0 frame:0 TX packets:2214 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000  RX bytes:306833 (299.6 KiB)  TX bytes:234127 (228.6 KiB) Interrupt:19 Base address:0x2000 

[root@yanghua shiyan]# ifconfig eth0|sed -r -n ‘s/^.*r:(.*)  Bcast:(.*)  Ma.*/\1\n\2/p’ 192.168.210.128 192.168.210.255

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88394

(0)
小白Linux小白Linux
上一篇 2017-11-14
下一篇 2017-11-14

相关推荐

  • 数据库的备份和恢复

    数据库的备份和恢复 一 (理论篇)、数据库备份与恢复基础 1、数据库的备份与恢复 备份:存储的数据副本; 原始数据:持续改变; 恢复:把副本应用到线上系统; 仅能恢复至备份操作时刻的数据状态; 时间点恢复: binary logs; 2、为什么备份? 灾难恢复: 硬件故障(冗余)、软件故障(bug)、自然灾害、黑客攻击、误操作、…&nb…

    2016-11-22
  • 计算机原理

    计算机由CPU、存储器、输入设备、输出设备组成。 CPU的功能:对数据运算加工,控制设备等 存储器的功能:存储数据,加载程序 输入设备:下指令,提供数据等 输出设备:输出数据加工的结果 linux发行版本:Debian:ubuntu、knopix Slackware:S.u.S.E、SLES、openSUSE RedHat:Redhat 9.0、RedHat…

    Linux干货 2017-12-04
  • bind的安装实现

    首先介绍一下我的测试环境:centos 7+入网(为了试行一下自己的安装文档,才装的虚拟机) 1> yum install bind bind-chroot -y     因为刚刚安装的虚拟机,这里我就不检查了; 2>vim named.conf [root@localhost named]# cat /e…

    Linux干货 2016-03-20
  • 计算机及Linux基础介绍

    Linux及计算机基础介绍 计算机的组成及其功能 What:计算机的组成是什么? 计算机的主要部件: CPU:可分为运算器、控制器、寄存器、缓存等 存储器:比如内存。执行程序时,会将程序及相关数据加载进内存,供CPU读取 输入设备:比如:键盘。用于下达指令及输入数据。 输出设备:比如显示器。用户显示和输出指令执行的结果等 冯诺依曼体系中提出的五大部件为:运算…

    Linux干货 2016-09-19
  • Docker 之初次体验

    一、Docker 简介  lxc linux container,openvz  容器中各虚拟机只有一个内核,而是多个用户空间  在库中完成虚拟化,比如wine 或者在windows中运行bash  在应用程序的运行级别提供虚拟化,比如jvm   pstree , pid 为1 的进程  …

    Linux干货 2017-02-24
  • N25-第四周作业

    第四周作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]#cp -r /etc/skel /home/tuser1 ~]#chmor 700 /home/tuser1 2、编辑/etc/group文件,添加组hadoop。 ~]#echo "h…

    Linux干货 2017-01-03