正则表达式

1.正则表达式

^  $    .   *  []  BRE

 

^  以......开头    ^m

 

$   以........结尾   m$     空格$

 

cat  -A  显示全部隐藏特殊符号  每行结尾  都有一个$

 

^$    表示空行

grep -n '^$'  zzz.txt

显示文件的空行

 

 cat -An  zzz.txt显示所有行   符号

 

 [root@zzz]# grep -vn '^$'  zzz.txt

  不显示 空行 显示行号

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

   转义符号    把特使符号脱掉马甲打回原形 

配合

   回车   换行符号

tr

把zzz.txt中的 回车换行替换为空格符号

tr ' ' " "  <zzz.txt

 

*  前一个字符 出现了0次 0次以上

出现了0次相当与没有

‘0*’ 会把文件的内容全部显示出来

     .* 正则表示  连续出现或者所有(.*)有多少吃多少

          并且并且并且并且

   -o   都变序列了

 

[root@zzzedu45-zbb zzz]# grep '^m.*m$' zzz.txt

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

[root@zzzedu45-zbb zzz]#

 

找回以点结尾的行

[root@zzzedu45-zbb zzz]# grep '.$'  zzz.txt

I teach linux.

not 4900000448.

[root@zzzedu45-zbb zzz]#

#把文件中每一行结尾的空格删除

 

sed 's# $##g' zzz.txt|cat - A

sed 's# $##g' zzz.txt   -i

 

 

 

[]相当与是一个符号(每次匹配1个符号)  找出a或者b

grep   ‘【abc】’   zzz.txt

 

 

#1.找出文件中以m或n开头的行

[root@zzzedu45-lnb zzz]# grep '^[mn]' zzz.txt

#2.找出文件中以m或n或o开头并且以m或.(点)结尾的行

[root@zzzedu45-lnb zzz]# grep '^[mno].*[m.]$' zzz.txt

 

 

[root@zzzedu45-lnb zzz]# grep '.$' zzz.txt

I teach linux.

not 4900000448.

[root@zzzedu45-lnb zzz]# grep '[.]$' zzz.txt

I teach linux.

not 4900000448.

 

grep  ‘[0-9]’   zzz

 

grep  ‘[0-9a-z]’   zzz   

 

 

grep  '[^abv]'  zzz.txt   ^是排除的意思

 

 

2. 扩展正则表达式  ERE

+

|

()

{}

 

 

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

 

 

[root@zzzedu45-lnb zzz]# egrep '0' zzz.txt

my qq is 49000448

not 4900000448.

[root@zzzedu45-lnb zzz]# egrep '0+' zzz.txt

my qq is 49000448

not 4900000448.

[root@zzzedu45-lnb zzz]# egrep '0' zzz.txt -o

0

0

0

0

0

0

0

0

 

[root@zzzedu45-lnb zzz]#

[root@zzzedu45-lnb zzz]# egrep '0+' zzz.txt -o

000

00000

 

 

 

egrep '[a-Z]+'  zzz.txt     -o

把文件中单词显示出来

连续出线的大小写字母

 

 

  |   或者的意思

[abc]区别   单个字符

a|b|c

 

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

先保护  后引用

 egrep 'oldb(o|e)y'

 

sed  支持扩展正则  -r

 

root@zzzedu45-lnb zzz]# echo '<123456>'

<123456>

[root@zzzedu45-lnb zzz]# echo 123456|sed 's#(.*)#  1#g'

sed: -e expression #1, char 13: invalid reference 1 on `s' command's RHS

[root@zzzedu45-lnb zzz]# echo 123456|sed -r 's#(.*)#  1#g'

  123456

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

<123456>

 

[root@zzzedu45-lnb zzz]# echo 123456|sed -r 's#(..)(..)(..)#1<2>3#g'

12<34>56

[root@zzzedu45-lnb zzz]# echo 123456

123456

[root@zzzedu45-lnb zzz]# echo '12<34>56'

12<34>56

[root@zzzedu45-lnb zzz]# echo 123456|sed -r 's#..(..)..#<1>#g'

<34>

[root@zzzedu45-lnb zzz]# echo 123456|sed -r 's#(..)(..)(..)#1<2>3#g'

12<34>56

 

 

 

{}0{n,m}前一个字符至少出现n次  最对出现m次

 *   >=0

 +  >=1

egrep '0{1,3}' zzz.txt

[root@zzzedu45-lnb zzz]# egrep '0{3,4}' zzz.txt

my qq is 49000448

not 4900000448.

0000000000000000000000000000000zzz

[root@zzzedu45-lnb zzz]# egrep '0{3,4}' zzz.txt -o

000

0000

0000

0000

0000

0000

0000

0000

0000

 

egrep '[0-9]{17}[0-9X]'  id.txt

?  前一个字符出现0次或者1次

 

正则 处理文字符号  文件过滤文件内容

坏境如下

 

cat zzz.txt

I am zzz teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

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

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

my qq is 49000448

not 4900000448.

my god ,i am not oldbey,but zzz!

原文地址:https://www.cnblogs.com/zdqc/p/9430203.html