正则表达式

第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#(..)(..)(..)#\3\2#g'

5634

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

563412

[[email protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#\3<\2\1#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  

相关文章

jquery.validate使用攻略(表单校验) 目录 jquery.validate...
/\s+/g和/\s/g的区别 正则表达式/\s+/g...
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母...
this.optional(element)的用法 this.optional(element)是jqu...
jQuery.validate 表单动态验证 实际上jQuery.validate提供了...
自定义验证之这能输入数字(包括小数 负数 ) &lt;script ...