前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

正则

原创
作者头像
ruochen
发布2021-11-26 13:08:06
2.9K0
发布2021-11-26 13:08:06
举报
文章被收录于专栏:若尘的技术专栏

2.1正则表达式概述

代码语言:txt
复制
1.目标:
代码语言:txt
复制
    *方便人们处理文本,字符的内容
代码语言:txt
复制
    *方便人们处理有规律的内容
代码语言:txt
复制
    *方便人们使用三剑客,高级语言处理字符
代码语言:txt
复制
2.应用场景:
代码语言:txt
复制
  通过特殊符号"^ $   .*.*    ()   []    [^]    |  +  ...",表达或匹配有规律的内容
代码语言:txt
复制
3.举例
代码语言:txt
复制
   匹配手机号
代码语言:txt
复制
   匹配身份证号

2.2正则分类

re (regular expression)
基础正则 bre
扩展正则 ere
代码语言:txt
复制
1.基础正则符号: ^  $  .  *   .*     ^$  []    [^]
代码语言:txt
复制
2.扩展正则: +    |   ()    {}   ?

2.3区别

image.png

2.4正则误区

(1)正则vs通配符

image.png

(2)通配符快速复习指南
代码语言:txt
复制
#匹配文件名字
代码语言:txt
复制
## * 所有
代码语言:txt
复制
ls *.txt   
代码语言:txt
复制
find /    -type f  -name "*.avi"
代码语言:txt
复制
## {} 生成序列
代码语言:txt
复制
###
代码语言:txt
复制
echo {a..z}   {A..Z}  
代码语言:txt
复制
echo {0..10}  
代码语言:txt
复制
echo {01..100}
代码语言:txt
复制
### 无规律
代码语言:txt
复制
[root@m01 ~]# echo {a,b,z}
代码语言:txt
复制
a b z
代码语言:txt
复制
[root@m01 ~]# cp   oldboy.txt{,.bak}
代码语言:txt
复制
[root@m01 ~]# ll oldboy.txt* 
代码语言:txt
复制
-rwxrwxrwx. 1 root root 23 Apr 25 16:41 oldboy.txt
代码语言:txt
复制
-rwxr-xr-x  1 root root 23 Jul  1 09:11 oldboy.txt.bak
代码语言:txt
复制
[root@m01 ~]# echo cp   oldboy.txt{,.bak}
代码语言:txt
复制
cp oldboy.txt oldboy.txt.bak
代码语言:txt
复制
[root@m01 ~]# 
代码语言:txt
复制
[root@m01 ~]# echo cp   A{,.bak}
代码语言:txt
复制
cp A A.bak
代码语言:txt
复制
[root@m01 ~]# echo cp   A{,C}
代码语言:txt
复制
cp A AC
代码语言:txt
复制
[root@m01 ~]# 
代码语言:txt
复制
### 进阶
代码语言:txt
复制
[root@m01 ~]# echo {1..10..2}
代码语言:txt
复制
1 3 5 7 9
代码语言:txt
复制
[root@m01 ~]# echo {2..10..2}
代码语言:txt
复制
2 4 6 8 10
代码语言:txt
复制
[root@m01 ~]# echo {a..z..2}
代码语言:txt
复制
a c e g i k m o q s u w y
代码语言:txt
复制
[root@m01 ~]# 
代码语言:txt
复制
[root@m01 ~]# 
代码语言:txt
复制
[root@m01 ~]# seq 1   2 10 
代码语言:txt
复制
1
代码语言:txt
复制
3
代码语言:txt
复制
5
代码语言:txt
复制
7
代码语言:txt
复制
9
代码语言:txt
复制
### 了解更多 █████████
代码语言:txt
复制
man bash

2.5基础正则

image.png

(1)^ $
代码语言:txt
复制
oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY! 

image.png

2) ^$ 空行

image.png

代码语言:txt
复制
[root@m01 /server/files]# grep -v '^$' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
案例 排除 /etc/ssh/sshd_config中的空行和注释行
代码语言:txt
复制
grep -v '^$' /etc/ssh/sshd_config |grep -v '#'
代码语言:txt
复制
egrep -v '^$|#' /etc/ssh/sshd_config
代码语言:txt
复制
sed -r '/^$|#/p'   /etc/ssh/sshd_config
代码语言:txt
复制
awk   '/^$|#/'   /etc/ssh/sshd_config
代码语言:txt
复制
其他方法: 
代码语言:txt
复制
grep '^[a-zA-Z]' /etc/ssh/sshd_config
代码语言:txt
复制
grep '^[a-Z]' /etc/ssh/sshd_config
3) .

image.png

4) * 前一个字符连续出现0次或0次以上
代码语言:txt
复制
[root@m01 /server/files]# grep '0*' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# #grep '0*' oldboy.txt 
代码语言:txt
复制
[root@m01 /server/files]# # 连续出现的时候 0次以上 0 0000 0000000
代码语言:txt
复制
[root@m01 /server/files]# # 连续出现的时候 0次     ''
代码语言:txt
复制
[root@m01 /server/files]# grep '' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
挑战: 排除文件中的空行,只包含空格的行
代码语言:txt
复制
[root@m01 /server/files]# echo -e 'oldboy\n\nlidao   \n     \n\nlidao\n   lidao     '>star.txt
代码语言:txt
复制
[root@m01 /server/files]# cat star.txt
代码语言:txt
复制
oldboy
代码语言:txt
复制
lidao    
代码语言:txt
复制
lidao
代码语言:txt
复制
   lidao     
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# cat -A star.txt
代码语言:txt
复制
oldboy$
代码语言:txt
复制
$
代码语言:txt
复制
lidao    $
代码语言:txt
复制
     $
代码语言:txt
复制
$
代码语言:txt
复制
lidao$
代码语言:txt
复制
   lidao     $
代码语言:txt
复制
#方法1    
代码语言:txt
复制
[root@m01 /server/files]# grep -v '^$' star.txt 
代码语言:txt
复制
oldboy
代码语言:txt
复制
lidao    
代码语言:txt
复制
lidao
代码语言:txt
复制
   lidao     
代码语言:txt
复制
[root@m01 /server/files]# grep -v '^$' star.txt |grep -v '^ *$'
代码语言:txt
复制
oldboy
代码语言:txt
复制
lidao    
代码语言:txt
复制
lidao
代码语言:txt
复制
   lidao     
代码语言:txt
复制
#方法2 
代码语言:txt
复制
[root@m01 /server/files]# grep -v '^ *$' star.txt 
代码语言:txt
复制
oldboy
代码语言:txt
复制
lidao    
代码语言:txt
复制
lidao
代码语言:txt
复制
   lidao     
代码语言:txt
复制
[root@m01 /server/files]# #^ *$   *0次以上   ^ $ ^ $ ^         $
代码语言:txt
复制
[root@m01 /server/files]# #^ *$   *0次       ^$
代码语言:txt
复制
[root@m01 /server/files]# grep -v '^ *$' star.txt 
代码语言:txt
复制
oldboy
代码语言:txt
复制
lidao    
代码语言:txt
复制
lidao
代码语言:txt
复制
   lidao 
代码语言:txt
复制
#方法3    
代码语言:txt
复制
[root@m01 /server/files]# egrep -v '^$|^ +$' star.txt
代码语言:txt
复制
oldboy
代码语言:txt
复制
lidao    
代码语言:txt
复制
lidao
代码语言:txt
复制
   lidao 
5) .* 所有
代码语言:txt
复制
# 正则表达式的贪婪性   .* 匹配所有   连续出现 * + {} ?   
代码语言:txt
复制
grep  '^.*:' passwd 
代码语言:txt
复制
# 限制方法-增加条件/内容

image.png

image.png

正则表达式表示 并且
代码语言:txt
复制
#匹配 oldboy.txt中 以字母m开头并且以m空格即为的行
代码语言:txt
复制
[root@m01 /server/files]# grep '^m.*m $' oldboy.txt 
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# grep '^m' oldboy.txt 
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
[root@m01 /server/files]# grep '^m' oldboy.txt |grep 'm $'
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
6) 一个整体 匹配任意一个字符a或b或c
代码语言:txt
复制
#匹配数字
代码语言:txt
复制
[0-9]
代码语言:txt
复制
#匹配字母(大小写字母) 
代码语言:txt
复制
[a-z]
代码语言:txt
复制
[A-Z]
代码语言:txt
复制
[a-zA-Z]
代码语言:txt
复制
[a-Z]
代码语言:txt
复制
# 基础使用
代码语言:txt
复制
[root@m01 /server/files]# grep '[abc]' oldboy.txt 
代码语言:txt
复制
[root@m01 /server/files]# grep -o '[abc]' oldboy.txt 
代码语言:txt
复制
a
代码语言:txt
复制
b
代码语言:txt
复制
a
代码语言:txt
复制
c
代码语言:txt
复制
a
代码语言:txt
复制
c
代码语言:txt
复制
b
代码语言:txt
复制
a
代码语言:txt
复制
[root@m01 /server/files]# grep -o '[abc][abc]' oldboy.txt 
代码语言:txt
复制
ac
代码语言:txt
复制
ac
代码语言:txt
复制
ba
代码语言:txt
复制
ba
代码语言:txt
复制
ba
代码语言:txt
复制
[root@m01 /server/files]# grep '[abc][abc]' oldboy.txt 
代码语言:txt
复制
[root@m01 /server/files]# grep '[abc][abc]' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess
补充: \ 转义字符 脱掉马甲打回原形
代码语言:txt
复制
[root@m01 /server/files]# grep '\.$' oldboy.txt 
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
[root@m01 /server/files]# # \ 转义字符 脱掉马甲打回原形 去掉特殊含义
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# grep '[.^$!!??]$' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# vim oldboy.txt 
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# grep '[.^$!!??]$' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
^^^^$$$$$....****?????!!!!
代码语言:txt
复制
$$..**?????!!!!
代码语言:txt
复制
^^^^$$..**???!!!!
代码语言:txt
复制
[root@m01 /server/files]# grep '[.^$!!??]' oldboy.txt 
代码语言:txt
复制
[root@m01 /server/files]# grep '[.^$!!??]' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
7) ^ 一个整体 匹配排除a或排除b或排除c的内容

image.png

进阶: 匹配出/etc/passwd的第1列
代码语言:txt
复制
grep '^[a-zA-Z0-9]*' /etc/passwd
代码语言:txt
复制
useradd quede_user_name666
代码语言:txt
复制
grep '^[a-zA-Z0-9]*' /etc/passwd
代码语言:txt
复制
grep '^[a-zA-Z0-9_]*' /etc/passwd
代码语言:txt
复制
useradd quede_user_name666-01
代码语言:txt
复制
grep '^[a-zA-Z0-9_]*' /etc/passwd
代码语言:txt
复制
grep '^[a-zA-Z0-9_-]*' /etc/passwd
代码语言:txt
复制
useradd quede_user_name666-01...
代码语言:txt
复制
grep '^[a-zA-Z0-9_-]*' /etc/passwd
代码语言:txt
复制
#需要慢慢理解
代码语言:txt
复制
[root@m01 /server/files]# grep '^[^:]*' /etc/passwd 
代码语言:txt
复制
egrep '^[^:]+' /etc/passwd 
8) BRE 小结

image.png

2.6 扩展正则

image.png

1) |
代码语言:txt
复制
[root@m01 /server/files]# egrep 'oldboy|my' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
[root@m01 /server/files]# grep -E 'oldboy|my' oldboy.txt 
代码语言:txt
复制
[root@m01 /server/files]# grep -E 'oldboy|my' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# grep   'oldboy\|my' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY! 
代码语言:txt
复制
[root@m01 /server/files]# egrep 'oldbo|ey' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
[root@m01 /server/files]# egrep 'oldb(o|e)y' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
[root@m01 /server/files]# egrep 'oldb[oe]y' oldboy.txt 
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY
[] |

image.png

2) + 前一个字符连续出1次或1次以上
代码语言:txt
复制
#取出文件中所有的单词 #统计重复次数
代码语言:txt
复制
egrep -o '[a-Z]+' oldboy.txt 
代码语言:txt
复制
egrep -o '[a-Z]+' oldboy.txt |sort 
代码语言:txt
复制
egrep -o '[a-Z]+' oldboy.txt |sort |uniq -c
代码语言:txt
复制
egrep -o '[a-Z]+' oldboy.txt |sort |uniq -c |sort -rn
代码语言:txt
复制
egrep -o '[a-Z]+' oldboy.txt |awk '{word[$1]++}END{for(n in word)print n,word[n]}'
代码语言:txt
复制
#取出文件中所有的字母 #统计重复次数
代码语言:txt
复制
egrep -o '[a-Z]' oldboy.txt 
代码语言:txt
复制
egrep -o '[a-Z]' oldboy.txt |sort 
代码语言:txt
复制
egrep -o '[a-Z]' oldboy.txt |sort |uniq -c
代码语言:txt
复制
egrep -o '[a-Z]' oldboy.txt |sort |uniq -c |sort -rn
代码语言:txt
复制
egrep -o '[a-Z]' oldboy.txt |awk '{word[$1]++}END{for(n in word)print n,word[n]}'
代码语言:txt
复制
awk -vRS='[^a-zA-Z]+' -F ''  '{for(i=1;i<=NF;i++)word[$i]++}END{for(n in word)print n,word[n]}' oldboy.txt
3) {} a{n,m} 前一个字符a连续出现至少n次,最多m次

image.png

代码语言:txt
复制
[root@m01 /server/files]# egrep '0{1,5}' oldboy.txt 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
[root@m01 /server/files]# egrep -o '0{1,5}' oldboy.txt 
代码语言:txt
复制
000
代码语言:txt
复制
00000
代码语言:txt
复制
[root@m01 /server/files]# egrep '0{3,4}' oldboy.txt 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
[root@m01 /server/files]# egrep -o '0{3,4}' oldboy.txt 
代码语言:txt
复制
000
代码语言:txt
复制
0000
代码语言:txt
复制
[root@m01 /server/files]# egrep '0{3}' oldboy.txt 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
[root@m01 /server/files]# egrep '0{2}' oldboy.txt 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
[root@m01 /server/files]# egrep '0{2}' oldboy.txt -o 
代码语言:txt
复制
00
代码语言:txt
复制
00
代码语言:txt
复制
00
代码语言:txt
复制
id.txt
代码语言:txt
复制
金 211324198705244720
代码语言:txt
复制
万 500224197105168312
代码语言:txt
复制
任 1231231231oldboy
代码语言:txt
复制
任 3oldboy
代码语言:txt
复制
任 lidao97303136098
代码语言:txt
复制
任 alex2197303136098
代码语言:txt
复制
任 350182197303oldgir
代码语言:txt
复制
吕 211282199209113038
代码语言:txt
复制
孔 150000198309176071
代码语言:txt
复制
邹 371001197412221284
代码语言:txt
复制
贺 130185200011215926
代码语言:txt
复制
杜 362522198711278101
代码语言:txt
复制
向 14052219961008852X
代码语言:txt
复制
取出文件中正确的身份证号码的行
代码语言:txt
复制
[root@m01 /server/files]# egrep '[0-9]{17}[0-9X]' id.txt 
代码语言:txt
复制
金 211324198705244720
代码语言:txt
复制
万 500224197105168312
代码语言:txt
复制
#正则使用流程
代码语言:txt
复制
##先找出规律
代码语言:txt
复制
##通过正则匹配
4) ( ) 表示整体 后向引用()
代码语言:txt
复制
[root@m01 /server/files]# xfs_info /dev/sda1 |egrep 'isize|bsize'
代码语言:txt
复制
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
代码语言:txt
复制
data     =                       bsize=4096   blocks=262144, imaxpct=25
代码语言:txt
复制
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
代码语言:txt
复制
log      =internal               bsize=4096   blocks=2560, version=2
代码语言:txt
复制
[root@m01 /server/files]# xfs_info /dev/sda1 |egrep 'i|bsize'
代码语言:txt
复制
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
代码语言:txt
复制
         =                       sectsz=512   attr=2, projid32bit=1
代码语言:txt
复制
         =                       crc=1        finobt=0 spinodes=0
代码语言:txt
复制
data     =                       bsize=4096   blocks=262144, imaxpct=25
代码语言:txt
复制
         =                       sunit=0      swidth=0 blks
代码语言:txt
复制
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
代码语言:txt
复制
log      =internal               bsize=4096   blocks=2560, version=2
代码语言:txt
复制
         =                       sectsz=512   sunit=0 blks, lazy-count=1
代码语言:txt
复制
realtime =none                   extsz=4096   blocks=0, rtextents=0
代码语言:txt
复制
[root@m01 /server/files]# xfs_info /dev/sda1 |egrep '(i|b)size'
代码语言:txt
复制
[root@m01 /server/files]# xfs_info /dev/sda1 |egrep '(i|b)size'
代码语言:txt
复制
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
代码语言:txt
复制
data     =                       bsize=4096   blocks=262144, imaxpct=25
代码语言:txt
复制
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
代码语言:txt
复制
log      =internal               bsize=4096   blocks=2560, version=2
代码语言:txt
复制
## 后项引用中的 () 
代码语言:txt
复制
[root@m01 /server/files]# echo 123456 
代码语言:txt
复制
123456
代码语言:txt
复制
[root@m01 /server/files]# echo '<123456>'
代码语言:txt
复制
<123456>
代码语言:txt
复制
[root@m01 /server/files]# echo 123456 |sed -r 's#(.*)#<\1>#g'
代码语言:txt
复制
<123456>
代码语言:txt
复制
[root@m01 /server/files]# echo 123456 |sed -r 's#(.)#<\1>#g'
代码语言:txt
复制
<1><2><3><4><5><6>
代码语言:txt
复制
[root@m01 /server/files]# echo {1..10} 
代码语言:txt
复制
1 2 3 4 5 6 7 8 9 10
代码语言:txt
复制
[root@m01 /server/files]# echo {1..10} 
代码语言:txt
复制
1 2 3 4 5 6 7 8 9 10
代码语言:txt
复制
[root@m01 /server/files]# echo {1..10} |sed -r 's#([0-9])#<\1>#g'
代码语言:txt
复制
<1> <2> <3> <4> <5> <6> <7> <8> <9> <1><0>
代码语言:txt
复制
[root@m01 /server/files]# echo {1..10} |sed -r 's#([0-9]+)#<\1>#g'
代码语言:txt
复制
<1> <2> <3> <4> <5> <6> <7> <8> <9> <10>
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# echo {1..10} |sed -r 's#(4|6|10)#<\1>#g'
代码语言:txt
复制
1 2 3 <4> 5 <6> 7 8 9 <10>
5) ? 前一个字符出现了0次或1次
代码语言:txt
复制
[root@m01 /server/files]# cat job.txt
代码语言:txt
复制
joooooooob
代码语言:txt
复制
jooooob
代码语言:txt
复制
jooob
代码语言:txt
复制
job
代码语言:txt
复制
jb
代码语言:txt
复制
[root@m01 /server/files]# egrep 'job|jb' job.txt
代码语言:txt
复制
job
代码语言:txt
复制
jb
代码语言:txt
复制
[root@m01 /server/files]# egrep 'jo?b' job.txt
代码语言:txt
复制
job
代码语言:txt
复制
jb
仅仅使用正则取出ip地址
代码语言:txt
复制
root@m01 /server/files]# ip a s eth0 |egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|head -1 
代码语言:txt
复制
10.0.0.61
代码语言:txt
复制
[root@m01 /server/files]# ip a s eth0 |egrep '([0-9]{1,3}\.?){4}'
代码语言:txt
复制
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
代码语言:txt
复制
   inet 10.0.0.61/24 brd 10.0.0.255 scope global eth0
代码语言:txt
复制
[root@m01 /server/files]# ip a s eth0 |egrep '([0-9]{1,3}\.?){4}' -o 
代码语言:txt
复制
1500
代码语言:txt
复制
1000
代码语言:txt
复制
10.0.0.61
代码语言:txt
复制
10.0.0.255
代码语言:txt
复制
[root@m01 /server/files]# ip a s eth0 |egrep '([0-9]{1,3}\.?){4}' -o |sed -n 3p 
代码语言:txt
复制
10.0.0.61

image.png

2.7perl正则

1) 零宽断言
代码语言:txt
复制
#取出 下面的 uptime时间
代码语言:txt
复制
16:30:13 up 41 days, 17:41,  1 user, load average: 0.03, 0.09, 0.08
代码语言:txt
复制
16:29:51 up  7:20,  2 users, load average: 0.01, 0.03, 0.05
代码语言:txt
复制
16:41:42 up 0 min,  1 user, load average: 0.43, 0.13, 0.05
代码语言:txt
复制
[root@m01 ~]# grep -Po '(?<=up).*(?=\d+ user)' uptime.txt 
代码语言:txt
复制
41 days, 17:41,  
代码语言:txt
复制
  7:20,  
代码语言:txt
复制
0 min,  
代码语言:txt
复制
23 min, 

image.png

2)perl 符号

image.png

2.8其他符号

1) 括号表达式 了解
代码语言:txt
复制
[:alnum:]
代码语言:txt
复制
[root@m01 /server/files]# grep '[[:alnum:]]' oldboy.txt
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
____aaaaolidao996
代码语言:txt
复制
[root@m01 /server/files]# grep '[a-zA-Z0-9]' oldboy.txt
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
____aaaaolidao996
代码语言:txt
复制
[root@m01 /server/files]# 
代码语言:txt
复制
[root@m01 /server/files]# grep -P '\w' oldboy.txt
代码语言:txt
复制
I am oldboy teacher!
代码语言:txt
复制
I teach linux.
代码语言:txt
复制
I like badminton ball ,billiard ball and chinese chess!
代码语言:txt
复制
my blog is http://oldboy.blog.51cto.com 
代码语言:txt
复制
our size is http://blog.oldboyedu.com 
代码语言:txt
复制
my qq is 49000448
代码语言:txt
复制
not 4900000448.
代码语言:txt
复制
my god ,i am not oldbey,but OLDBOY!  
代码语言:txt
复制
____aaaaolidao996
2) 其他字符
代码语言:txt
复制
[root@m01 /server/files]# cat name.txt 
代码语言:txt
复制
oldboy
代码语言:txt
复制
oldboylidao
代码语言:txt
复制
oldboy666
代码语言:txt
复制
oldboyedu
代码语言:txt
复制
[root@m01 /server/files]# grep -w oldboy name.txt
代码语言:txt
复制
oldboy
代码语言:txt
复制
[root@m01 /server/files]# grep '\boldboy\b' name.txt
代码语言:txt
复制
oldboy
代码语言:txt
复制
[root@m01 /server/files]# grep '\<oldboy\>' name.txt
代码语言:txt
复制
oldboy

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1正则表达式概述
  • 2.2正则分类
  • 2.3区别
  • 2.4正则误区
  • 2.5基础正则
  • 2.6 扩展正则
  • 2.7perl正则
  • 2.8其他符号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档