加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

day 18 正则表达式与取出ip地址

发布时间:2020-12-14 06:16:49 所属栏目:百科 来源:网络整理
导读:复习: 特殊符号: 引号 重定向符号 位置 判断 其他符号 通配符 VS 正则表达式 通配符:找出文件名 大部分命令可以使用 正则: ?? ?? 精确的过滤 三剑客使用 ? 正则表达式 基础正则 ^ $ * .* ? ? ? ? 1.1 找出 oldboy.txt 中以 m 或 n 开头的行 [[email?prot
复习:

特殊符号:

引号

重定向符号

位置

判断

其他符号

通配符 VS 正则表达式

通配符:找出文件名 大部分命令可以使用

正则:?? ??精确的过滤 三剑客使用

?

正则表达式

基础正则

^

$

*

.*

?

?

?

?

1.1 找出oldboy.txt中以mn开头的行

[[email?protected] oldboy]# grep "^[mn]" oldboy.txt

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

my qq is 49000448

not 4900000448.

my god,i am not oldbey,but OLDBOY!

?

1.2 找出oldboy.txt中以mn开头并且以mn结尾的行

[[email?protected] /oldboy]# grep '^[mn]'? oldboy.txt

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

my qq is 49000448

not 4900000448.

my god,but OLDBOY!

[[email?protected] /oldboy]# grep '^[mn]'? oldboy.txt|grep '[mn] $'

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

?

?

[[email?protected] /oldboy]# grep '^[mn].*[mn]$'? oldboy.txt

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

?

第2章 9个符号-? [^] [^abc]

?????? 相当于是一个符号(每次匹配1个字符)

2.1 找出除了a或除了b或除了c

[[email?protected] /oldboy]# grep '[^abc]'? oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball,billiard ball and chinese chess!

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

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

my qq is 49000448

not 4900000448.

my god,but OLDBOY!

?

?

2.2 #排除文件中的数字和大小写字母

[[email?protected] /oldboy]# grep '[0-Z]' oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball,but OLDBOY!

小结:

^???? ...开头的行

$???? ...结尾的行

^$??? 空行

.???? 任意一个字符

*???? 0个或多个

.*??? 所有

[]??? [abc]

[^]?? [^abc]

?

?

()?? 小括号

[]?? 中括号

{}?? 大括号 花括号

?

?

扩展正则 ERE Extented Regular Expression)

?

第3章 10个符号- +

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

0连续出现

?

[[email?protected] /oldboy]# egrep '0+' oldboy.txt

my qq is 49000448

not 4900000448.

?

?

?

[[email?protected] /oldboy]# grep -E '0+' oldboy.txt

my qq is 49000448

not 4900000448.

?

?

?

?

[[email?protected] /oldboy]# grep '0+' oldboy.txt

my qq is 49000448

not 4900000448.

?

?

有加号和没有加号的区别

-o显示过程

[[email?protected] /oldboy]# egrep '0+' oldboy.txt –o?? (一次多个

000

00000

[[email?protected] /oldboy]# egrep '0' oldboy.txt -o

0

0

0

0

0

0

0

0

?

?

3.1.1 #取出连续出现的小写字母

?

[[email?protected] /oldboy]# egrep '[a-z]+'? oldboy.txt?

?

查看过程:

第4章 11个符号-?? |? 或者

4.1 oldboylinux

[[email?protected] /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

?

?

4.2 #先备份 /etc/ssh/sshd_config 然后 排除 文件中的#号的行或空行

备份:???? [[email?protected] oldboy]# cp /etc/ssh/sshd_config{,.bak}

排除:

[[email?protected] /oldboy]# egrep -v '^$|#' /etc/ssh/sshd_config

Protocol 2

SyslogFacility AUTHPRIV

PasswordAuthentication yes

ChallengeResponseAuthentication no

GSSAPIAuthentication yes

GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT

AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE

AcceptEnv XMODIFIERS

X11Forwarding yes

Subsystem?? sftp??? /usr/libexec/openssh/sftp-server

?

第5章 正则表达式-3-? [^#^$]? [^$] [^#$]

[] $ . 没有特殊含义

编辑一些符号,然后查看

[[email?protected] /oldboy]# cat oldboy.txt

I am oldboy teacher!

I teach linux.

?

I like badminton ball,billiard ball and chinese chess!

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

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

my qq is 49000448

?

not 4900000448.

my god,but OLDBOY!

+++++\!!!!$$$$$$^^^

####!!!^^^^^[email?protected]@@@@####

?

?

?

?

?

[[email?protected] /oldboy]# grep '[^#^$]'? oldboy.txt(执行这条命令相当于是排除# ^ $ 三个符号)

I am oldboy teacher!

I teach linux.

I like badminton ball,billiard ball and chinese chess!

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

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

my qq is 49000448

not 4900000448.

my god,but OLDBOY!

+++++\!!!!$$$$$$^^^

####!!!^^^^^[email?protected]@@@@####

?

[[email?protected] /oldboy]# grep '.$'? oldboy.txt

I teach linux.

not 4900000448.

?

?

[[email?protected] /oldboy]# grep '[.]$'? oldboy.txt

I teach linux.

not 4900000448.

第6章 正则表达式-4-? [^abc]? vs? grep -v

?

[^a-z]????????? 排除按字符 某个字符 某些字符

?

grep -v [a-z]?? 排除按行

6.1 排除a-z的小写字母

[[email?protected] /oldboy]# grep '[^a-z]'? oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball,but OLDBOY!

+++++\!!!!$$$$$$^^^

####!!!^^^^^[email?protected]@@@@####

?

?

?

?

?

?

6.2 排除含有a-z的行

[[email?protected] /oldboy]# grep -v '[a-z]'? oldboy.txt

?

?

+++++\!!!!$$$$$$^^^

####!!!^^^^^[email?protected]@@@@####

?

6.3 12个符号- () 表示一个整体? 反向引用/后向引用

6.3.1 找出oldboyoldbey

找共同点:

???????? 只差o和e两个字母,将它们作为一个整体 先保护起来,然后使用

[[email?protected] /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,but OLDBOY!

?

反向引用/后向引用

?

思路:把你想要的内容保护起来 ()

6.4 ?sed 's###g' 后两个井号之间使用? 数字 引用

?

[[email?protected] /oldboy]# echo 123456

123456

[[email?protected] /oldboy]# echo '<123456>'

<123456>

?

[[email?protected] /oldboy]# echo 123456

123456

[[email?protected] /oldboy]# echo '<123456>'

<123456>

[[email?protected] /oldboy]# echo 123456|sed -r 's#(.*)#1#g'

123456

[[email?protected] /oldboy]# echo 123456|sed -r 's#(.*)#<1>#g'

<123456>??????????????????????? (将所有数字作为一个整体,在它们前后加上<>

?

echo? 123456

12<34>56

[[email?protected] /oldboy]# echo 123456|sed -r 's#(34)#<1>#g'

12<34>56??????????????????????? (将34作为一个整体,在它们前后加上<>

[[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#3#g'

56

[[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#32#g'

5634

[[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#321#g'

563412

[[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#3<21#g'

[[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#3<2>1#g'

56<34>12

13个符号 { } 0{n,m} 前一个字符至少连续出现了n次,最多连续出现m

a{n,m}前一个数字连续出现至少n次最多m

a{n}前一个数字连续出现n

a{n,}前一个数字连续出现至少n

a{,m}前一个数字连续出现最多m

?

过滤出0至少出现三次,最多出现4

?

[[email?protected] /oldboy]# egrep '0{3,4}' oldboy.txt

my qq is 49000448

not 4900000448.

[[email?protected] /oldboy]# egrep '0{3}' oldboy.txt

my qq is 49000448

not 4900000448.

?

第7章 提取×××号练习题:

?[[email?protected] /]# cat id.txt

金 211324198705244720

万 500224197105168312

任 1231231231oldboy

任 3oldboy

任 lidao97303136098

任 alex2197303136098

任 350182197303oldgir

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

?

?

[[email?protected] /oldboy]# egrep '[0-9X]{18}' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

?

?

[[email?protected] /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

?

BRE

?????? 1. ^

?????? 2. $

?????? 3. ^$

?????? 4. .(点)

?????? 5. *

?????? 6. .*

?????? 7. [] [a-z] [A-Z]? [0-9]

????????????? ???? grep/egrep [a-Z]

?????? 8. [^]

?

ERE小结

?????? 1.+??

?????? 2.|??

?????? 3.()?

?????? 4.{}?

?????? 5. ??

?

第8章 取出网卡的ip地址

ip a?????? s??? eth0

ip address show eth0

?

?

某一行的某一部分

1.定位 取出某一行

2.sed/awk 取出想要的内容

?

方法1

?

[[email?protected] /oldboy]# ip a s eth0 |awk 'NR==3'|awk? -F"[ /]+"? '{print $3}'

10.0.0.200

[[email?protected] /oldboy]#

?

?

?

?

8.1 取出ifconfig eth0 ip地址和子网掩码

[[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2'

????????? inet addr:10.0.0.200? Bcast:10.0.0.255? Mask:255.255.255.0

[[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"[ :]+"? '{print $4,$NF}'

10.0.0.200 255.255.255.0

?

?

?

[[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2'

????????? inet addr:10.0.0.200? Bcast:10.0.0.255? Mask:255.255.255.0

[[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Bcast:"? '{print $2}'

10.0.0.200

?

?

[[email?protected] oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Mask:|Bcast:"? '{print $2,$NF}'

10.0.0.200?? 255.255.255.0

[[email?protected] oldboy]#

?

?


?

小结:

1.取出ip地址

2.awk方法 -F (指定分隔符)

?

?

总结:

1.正则 BRE ERE

2.排除文件中的空行或以#开头的行 grep sed awk

3.取出网卡ip地址

ifconfig eth0

ip a

awk

sed

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读