您的位置:时时app平台注册网站 > 时时app平台注册网站 > linux正则表明式时时app平台注册网站

linux正则表明式时时app平台注册网站

2019-10-12 10:31

1.2 正则表明式分类

1.6.1 基础正则

^       以……开头

$       以……结尾

^$     空行

.*      所有

[abc]   表示abc

[a-z]   表示a到z

[A-Z]   表示A-Z

[^abc]  代表免除abc

3.领略多少个误区注意事项:
a.正则表达式的使用特别广阔,存在于各个语言中,PEGL450L,PHP,JAVA等。
咱俩明日给我们讲明的正是linux的正则表明式,系统运转专门的学问中常用的正则表明式
常用的正则表明式的指令为grep(egrep),sed,awk。
linux的三刺客很牛,要想三剑客玩得更加好,那就必然离不开正表明式。

1.5 $ 以….结尾的行  $

 

cat -A 显示文件中所有符号  每行结尾都会有个$

[root@zeq /oldboy]# grep  ' $'  oldboy.txt

my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

 

1.5  ?

前二个字符一而再出现了 0次或1次

2.为何要读书正则表明式?
再职业中,大家做linux运行职业,时刻面临着大批量的日志,程序,命令的出口。
归心似箭的内需过滤大家需求的一片段内容,乃至是一个字符串。

1.6 . 自便三个字符,不会同盟空行

[root@zeq /oldboy]# grep  '.' oldboy.txt

grep –o                                          grep命令执行过程

[root@oldboyedu50-lnb /oldboy]# grep -o '.' oldboy.txt

 

1.3.1 表示多个完好无缺

[[email protected] ~]# egrep "oldb(o|e)y" oldboy.txt

I am oldboy teacher!

my blog is

my god ,i am not oldbey,but OLDBOY!

5.linux正则表达式细节
基于grep来讲的。
基础正则表明式:BRE(basic regular expression)
1)^word 代表搜索以word伊始的原委。
2)word$ 表示寻觅以word结尾的剧情。
3)^$    表示空行,不是空格。
4).      代表且不得不表示私下一个字符。(当前目录,加载文件)
5)      转义字符,让具备极其地位意义的字符,脱掉马甲,还原原型。
          例如:.只代表小数点,还原原始小数点的意思。
6)*      重复0个或八个前面包车型地铁三个字符。不表示享有了。
7).*     相称全部的字符。^.* 任性八个字符伊始。
8)[abc]  相称字符集结内放肆贰个字符[a-z]
9)[^abc] ^再中括号里面表示非,不饱含a或b或c。
10){n,m} 重复n到m次,前多个字符。
    {n,} 最少N次,多了不限。
    {n}  N次
    {,m} 至多m次,少了不限。
   注意:grep 要对{转义} {},egrep(grep -E)无需转义
基础的正则就讲完了。
6.grep发令参数小结
-v 排除相称的剧情
-E 扶持扩张的正则表达式
-i 忽视大小写
-o 只输出相称的剧情
--color=auto 相称的源委体现颜色。
-n 再行首呈现行号

第1章 正则表明式

1.4.1 大括号的不及措施

 0{3,6}   >=3 <=6

 0{3}     ==3

 0{3,}    >=3

 0{,6}    >=0 <=6

1.如何是正则表明式?
简易的说,正则表明式正是一套管理多量的字符串而定义的条条框框和方式。
例如:假设 @代表12345 
通过正则表明式这一个特殊符号,我们得以十分的快的过滤、替换必要的剧情。
linux正则平时以行为单位拍卖的。

1.8 | 或者

[root@zeq /oldboy]# egrep 'oldboy|linux'   oldboy.txt

I am oldboy teacher!

I teach linux.

my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

 

1.6.2 扩充正则表明式

     三番五次出现 1次或1次以上

|       或者

()      小括号内部的内容是四个安然照旧,也就是是八个字符

{}      0{n,m} 数字0一而再出现了最少n次,最多m次

?       前三个字符接二连三出现了 0次或1次

 

7.取IP地址练习正则:

2.1 方法1

[root@zeq /oldboy]# ip a s eth0 |awk 'NR==3'|awk  -F"[ /] "  '{print $3}'

10.0.0.200

[root@oldboyedu50-lnb /oldboy]#

 

2.1.1 看eth0的内容

[[email protected] ~]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A8:E4:14 

          inet addr:10.0.0.201  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fea8:e414/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

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

          collisions:0 txqueuelen:1000

          RX bytes:14324203 (13.6 MiB)  TX bytes:26220378 (25.0 MiB)

sed基本语法:
s替换
g全局
-i 修改文件
-n 撤销默许输出
 p 打字与印刷内容
-r 扶持扩展正则

1.10 {} 0{n,m} 数字0连续出现了最少n次,最多m次

[root@oldboyedu50-lnb /oldboy]# egrep '0{3,4}' oldboy.txt

my qq is 49000448

not 4900000448.



[root@oldboyedu50-lnb /oldboy]# cat id.txt

金 211324198705244720

万 500224197105168312

任 1231231231oldboy

任 3oldboy

任 lidao97303136098

任 alex2197303136098

任 350182197303oldgir

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X





[root@oldboyedu50-lnb /oldboy]# egrep '[0-9X]{18}' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

   XXXXXXXXXXXXXXXXXX

向 14052219961008852X



[root@oldboyedu50-lnb /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

 

第2章 取出eth0网卡的ip地址

linux运营正则表明式实战录像收看地址

QQ交流群 384467551

2.2 收取ifconfig eth0 ip地址和子网掩码

[root@zeq /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"[ :] "  '{print $4,$NF}'

10.0.0.200 255.255.255.0

 

1.1.3 抽出一而再出现的大写字母

[[email protected] ~]# egrep -o "[A-Z] " oldboy.txt

I

I

I

OLDBOY

考题:
ifconfig eth0:
         inet addr:10.0.0.7  Bcast:10.0.0.255  Mask:255.255.255.0
目标:10.0.0.7
过滤观念:
对象在此以前的内容“         inet addr:” 就用 ^.*addr:
指标结尾的原委"  Bcast:10.0.0.255  Mask:255.255.255.0"   就用Bc.*$
指令实战:
非凡直接sed取行*:
[root@oldboylinux oldboy]# ifconfig eth0|sed -n '2s#^.*addr:##gp'|sed 's#  Bc.*$##g'
10.0.0.7
[root@oldboylinux oldboy]# ifconfig eth0|sed -n '2s#^.*addr:(.*)  Bc.*$#1#gp'
10.0.0.7
[root@B ~]# ifconfig eth0|sed -rn '2s#^.*addr:(.*)  Bc.*$#1#gp'
10.0.0.8
[root@oldboylinux oldboy]# ifconfig eth0|sed -n '2s#^.*addr:([0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3})  Bc.*$#1#gp'
10.0.0.7

1.3.2 支持的命令分裂

基础正则:grep  sed  awk

扩展正则:egrep(grep  -E)    sed –r      awk

 

1.2  | 或者

意味着找此中的贰个大概是别的二个。

[[email protected] ~]# egrep "oldboy|oldbey" oldboy.txt  -o

oldboy

oldboy

oldbey

找/etc/services 中的八个端口

[[email protected] ~]# egrep "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

       找此中的A也许B也许C。

[[email protected] ~]# egrep "A|B|C" oldboy.txt

my god ,i am not oldbey,but OLDBOY!

       找到12要么56替换来空。

[[email protected] ~]# echo 123456|sed -r 's#12|56##g'

34

考题:
请用ifconfig,输出ip及广播地址
sed  -n 's#(dddd)(ffff)#12#gp' 一样相符grep。
命令:
[root@B ~]# ifconfig eth0|sed -nr 's#^.*dr:(.*) [a-zA-Z].*t:(.*)  Ma.*$#12#gp'   
10.0.0.8 10.0.0.255

1.7 前一个字符三番五次出现1次或1次以上

[root@zeq /oldboy]# egrep '0 ' oldboy.txt

my qq is 49000448

not 4900000448.

 

1.5.1 环境

[[email protected] ~]# cat a.log

good

gd

god

goood

4.实验的3个注意事项:
a.linux正则常常以行为单位管理的。
b.alias grep='grep --color=auto'
c.注意字符集,LC_ALL=C,不是必得

1.1 正则表明式

探求文本内容,急速过滤

1.1.1 找到文本中的0

[[email protected] ~]# egrep  "0 " oldboy.txt

my qq num is 49000448.

not 4900000448.

[[email protected] ~]# egrep -o  "0 " oldboy.txt

000

00000

 

b.linux正则表明式和大家命令行中其余的一声令下使用的通配符是有本质分裂的。

1.9.1 表示三个完全

[root@zeq /oldboy]# egrep 'oldb(o|e)y'  oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my god ,i am not oldbey,but OLDBOY!

 

第1章 扩张正则表明式

linux运行正则表明式实战

1.2.2 扩充正则

      前一个字符连续出现1次或1次以上

|      或者

()     表示一个整体   sed反向引用/后向引用

{}       0{n,m} 数字0连续出现了至少n次,最多m次

?      前一个字符连续出现0次或1次   前一个字符有或没有

 

2.1 思路

1)先固定 收取第二行

2)取出ip地址

扩张的正则表明式:grep -E 以致egrep
末尾有机遇再享受呢!
上边是后补的,讲座没时间讲了。
8.扩大的正则表达式:ERE
1) 重复叁个或二个以上后边的字符。
2)? 重复0个或三个0前方的字符。
3)|用或的方法查找三个符合的字符串
4)() 找出 “用户组”字符串。
其余一个打听的知识:posix方括号字符集(挺鸡肋的通晓就得)
       [:alnum:]             [:lower:]          [:xdigit:]
       [:alpha:]             [:print:]            [:blank:]
       [:blank:]             [:punct:]
       [:cntrl:]             [:space:]
       [:graph:]             [::upper:]
5)man bash
   man grep

1.4 ^ 以....伊始的行 ^m

 

[root@zeq /oldboy]# grep '^m'  oldboy.txt

my blog is http://oldboy.blog.51cto.com

my qq is 49000448

my god ,i am not oldbey,but OLDBOY!

 

1.3.2 反向援引

       sed -r 使用扩张正则

[[email protected] ~]# echo 123456|sed -r 's#..(..)..#1#g'

34

       点表示任意二个字符,2象征第二个括号。

[[email protected] ~]# echo 123456|sed -r 's#(.).(..).(.)#2#g'

34

1.2.1 基础正则

^    以…...开头的行 ^m

$    以…...结尾的行 m$

^$   空行(什么符号都没有)

.     任意一个字符,不会匹配空行

     (撬棍)转义字符

*     前一个字符连续出现0次或0次以上

.*     所有字符,包括空行

[]     相当于一个符号,每次匹配1个字符

[abc]  找出包含a或b或c

[^]    排除,排除[]里的每一个字符

[^abc] 找出除了a或除了b或除了c外

 

 

1.1.2 抽取文件中的大写字母

[[email protected] ~]# grep -o "[A-Z]" oldboy.txt

I

I

I

O

L

D

B

O

Y

1.3.1 符号区别

基础正则: ^   $   ^$   .    .*    []    [^]

扩展正则:     |   ()   {}   ?

 

2.3 方法二sed 反向引用 

反向替换,使用()把ip地址珍重起来,1趋势选择,展现出来ip。

[[email protected] ~]# ifconfig eth0|sed -nr '2s#^.*dr:(.*)  Bc.*$#1#gp'

10.0.0.201

       简写

第1章 扩展正则表明式 1.1 前贰个字符一连出现了 1 次或 1 次以上 egrep "0 " oldboy.txt 1 次或 1 次以上 =1 egrep "0*" oldboy.txt 0 次或 0 次以...

第2章 取出eth0网卡的ip地址

1.3 () 小括号 反向引用

小括号内部的开始和结果是多个完好无缺,也就是是贰个字符 

1.3 基础正则与扩大正则的界别

1.1.4 彰显全体的单词

[[email protected] ~]# egrep -o "[A-Za-z] " oldboy.txt

I

am

oldboy

teacher

1.9 - () 表示一个完好无缺  反向援引/后向引用

Day16,

1.9.2 反向援用/后向引用

[root@oldboyedu50-lnb /oldboy]# echo 123456|sed -r 's#(.*)#<1>#g'

<123456>                                                    1 表示第一个括号

 

2.2 方法一 sed 去头去尾

用sed命令,将中间无需出示的,稳步替换。

[[email protected] ~]#  ifconfig eth0|sed -n '2p'|sed 's#^.*dr:##g'|sed 's# .*$##g'

10.0.0.201

1.6 正则表明式分类

1.1   前三个字符三番五次出现了1次或1次以上

egrep  "0 " oldboy.txt  1次或1次以上 >=1

egrep  "0*" oldboy.txt  0次或0次以上 >=0

1.4 {} 大括号(花括号)

0{n,m} 数字0三番五次出现了起码n次,最多m次

[[email protected] ~]# egrep "[a-z]{3,6}" oldboy.txt

I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is
our site is
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

 

[[email protected] ~]# egrep "[a-zA-Z]{3,6}" oldboy.txt

I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is
our site is
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[[email protected] ~]#

1.5.2 o再而三出现0次或1次

[[email protected] ~]# egrep "gd|god" a.log

gd
god

[[email protected] ~]# egrep "go?d" a.log

gd
god

本文由时时app平台注册网站发布于时时app平台注册网站,转载请注明出处:linux正则表明式时时app平台注册网站

关键词: