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

正则表达式

发布时间:2020-12-14 06:16:56 所属栏目:百科 来源:网络整理
导读:第1章 企业案例故障 实例1-1 ???????????? 磁盘空间不足系列: 原因????????????????????????? 排查过程???????????????????????? ??? 解决 1.block????????????????? df -h; du -sh /data/* 具体的文件或目录??? 确认之后删除????? 2.block??????????? ????
第1章 企业案例故障

实例1-1???????????? 磁盘空间不足系列:

原因????????????????????????? 排查过程???????????????????????? ??? 解决

1.block????????????????? df -h; du -sh /data/* 具体的文件或目录??? 确认之后删除?????

2.block??????????? ???? lsof|grep delete??????????????? ?????????? 重启对应的服务

3.inode???????????????? df -i; 找出系统中大于1M的目录????????? ??? 删除大量小文件

第2章 特殊符号

2.1 引号系列

2.1.1 “”????????? 双引号

引号内的特殊符号会被解析

2.1.2 ?‘’????????? 单引号

所见即所得,输入什么就输出什么

2.1.3 ``??????????? 反引号

$()==``

2.1.4 ???????????? 无引号

可以使用{}

2.2 重定向系列

>标准输出重定向先把文件清空追加

>>标准输出追加重定向

2> 标准错误输出重定向

2>>

<标准输入重定向 xargs tr

<<标准输入追加重定向与cat配合追加多行内容

2>&1将错误和正确内容都记录到文件中

2.3 位置系列

~????????? 当前用户家目录

..????????? 上一级目录

.?????????? 当前目录

-????????? ???参数? cd – su –?

2.4 判断关系

&& ??? 前面命令执行成功之后在执行后一个命令

||?????????? 前一个命令执行失败之后执行后一个命令

[[email?protected] ~]# ls /oldboy && echo 目录已存在

ext???? nginx.conf? oldboy.SH?? oldboy.txt-hard? oldboy.txt-soft2? test.sh? t.sh.bak? xiaodong? xingfujie

jeacen? oldboy????? oldboy.txt? oldboy.txt-soft? test????????????? t.sh???? wodi.gz?? xiaofan?? yingsui.gz

目录已存在

[[email?protected] ~]# ls /ooooo && echo 目录已存在

ls: cannot access /ooooo: No such file or directory

?[[email?protected] ~]# ls /ooooo || echo 目录不存在

ls: cannot access /ooooo: No such file or directory

目录不存在

2.5 无分类系列

#????????? 注释说明 显示环静变量的配置文件 root用户的命令提示符

$????????? 普通用户命令提示符????? awk取列

??????? ls运行上一个以ls开头的命令并执行 !!运行上一个命令

|?????????? 管道符号

;?????????? 在同一行分割命令

2.6 通配符号

2.6.1 * 所有文件

1.以.conf结尾的文件

find /?? -type f -name "*.conf"

2.找出系统中文件名包含ifconfig (文件名中有ifconfig就行)

方法一:

[[email?protected] ~]# find /? -type f? -name "ifconfig"

/sbin/ifconfig

[[email?protected] ~]#

[[email?protected] ~]# find /? -type f? -name "*ifconfig*"

/usr/sbin/pifconfig

/usr/share/man/de/man8/ifconfig.8.gz

/usr/share/man/pt/man8/ifconfig.8.gz

/usr/share/man/man8/pifconfig.8.gz

/usr/share/man/man8/ifconfig.8.gz

/usr/share/man/fr/man8/ifconfig.8.gz

/sbin/ifconfig

方法二:

[[email?protected] ~]# find /? -type f? |grep ifconfig

/usr/sbin/pifconfig

/usr/share/man/de/man8/ifconfig.8.gz

/usr/share/man/pt/man8/ifconfig.8.gz

/usr/share/man/man8/pifconfig.8.gz

/usr/share/man/man8/ifconfig.8.gz

/usr/share/man/fr/man8/ifconfig.8.gz

/sbin/ifconfig

2.6.2 {}?????????? 生成序列 备份

{} 生成序列

[[email?protected] ~]# echo stu{01..5}

stu01 stu02 stu03 stu04 stu05

[[email?protected] ~]#

[[email?protected] ~]#

[[email?protected] ~]# echo {1,5,100}

?

[[email?protected] ~]# echo stu{01..10}

stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10

[[email?protected] ~]# echo stu{01..10..2}

stu01 stu03 stu05 stu07 stu09

通过 {} 进行备份

[[email?protected] ~]# cp? oldboy.txt{,.bak}

[[email?protected] ~]# echo oldboy.txt{,.bak}

oldboy.txt oldboy.txt.bak

第3章 基础正则表达式

3.1 符号比较

中文 ‘’ ????? “” ??? () ??? ?? ?* ?…… ??? ?| ??? {}? 【】

英文??? '' ?????????? ""? ?????? () ????????? . ??? ?* ?^?? ????? $???? ?|? {}? []

为grep配置别名

alias grep='grep --color'

alias egrep='egrep --color'

3.2 1个符号?? ^? ....开头的行

模拟文件

[[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,i am not oldbey,but OLDBOY!

?

第1个符号?? ^

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

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

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

my qq is 49000448

my god,but OLDBOY!

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

3.3 2个符号? $ 显示文件结尾的行

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

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

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

3.4 3个符号^$ 显示空行

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

?

?

3.5 4个符号??? .? ????? 任意一个字符

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

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

3.6 5个符号???? ????? 转义字符

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

I teach linux.

not 4900000448.

[[email?protected] /oldboy]# tr? 'n'?? 't' <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] /oldboy]#

3.7 6个符号 ?? *???? 一个字符连续出现00次以上

3.8 7个符号 ?? .* 所有符号字符 包括空行

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

I am oldboy teacher!

I teach linux.

?

I like badminton ball,but OLDBOY!

正则中表示 连续出现或所有的时候

正则表达式有贪婪性

替你寻找的文字符号???? 有多少吃多少? 有多少匹配多少

?

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

I am oldboy teacher!

I like badminton ball,billiard ball and chinese chess!

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

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

not 4900000448.

my god,but OLDBOY!

?

3.9 8个符号 []每次匹配一个字符

grep '[a-z]' oldboy.txt

grep '[A-Z]' oldboy.txt

grep '[0-9]' oldboy.txt

?

grep '[a-zA-Z]' oldboy.txt

grep '[a-Z]' oldboy.txt

?

grep -i '[a-z]' oldboy.txt

???? -i 不区分大小写? ignore case

1.找出oldboy.txt中以m或n开头的行

[[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!

2.找出oldboy.txt中以m或n开头并且以m或n结尾的行

[[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

3.10 9个符号?? [^] 每次匹配一个字符,显示出除过这个字符的所有字符

[[email?protected] ~]# grep '[^ab]' oldboy.tat

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!

1.排除文件中的数字和大小写字母

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

I am oldboy teacher!

I teach linux.

I like badminton ball,but OLDBOY!

第4章 扩展正则表达式 ERE Extented Regular Expression)

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

[[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.

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

000

00000

1.取出连续出现的小写字母

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

4.2 11个符号? |? 或者

[[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

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

[[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

实例4-1???????????? [^]grep -v

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

grep -v [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]@@@@####

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

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

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

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

[[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!

反向引用/后向引用

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

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

[[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>

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

12<34>56

[[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

4.4 13个符号?? {}??? 0{n,m}表示至少出现了n次,最多出现m

[[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.

[[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.

取×××号码

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

?? XXXXXXXXXXXXXXXXXX

向 14052219961008852X

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

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

4.5 14个符号 ?? 前一个字符连续出现0次或1

取出网卡的ip地址

方法1

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

10.0.0.200

[[email?protected] /oldboy]#

取出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:| Mask:"? '{print $2}'

10.0.0.200??

(编辑:李大同)

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

    推荐文章
      热点阅读