正则表达式字符集与test判断语句参数总结

        在学习正则表达式和test判断语句时,存在大量的特殊符号和参数,如果对这些特殊符号和参数不熟悉,将会导致我们学习这部分内容时遇到种种困难,参考相关资料和老师所教,对该部分内容做了总结,方便学习和记忆:

        一,基本正则表达式特殊符号总结:

基本正则表达式特殊符号
特殊符号                                  代表意义
[:alnum:] 代表英文大小写及数字,即0~9、a~z、A~Z
[:alpha:] 代表任何英文大小写字符,即a~z、A~Z
[:blank:] 代表空格键与【Tab】按键两者
[:cntr:] 代表键盘上面控制按键,包括Tab、Del等
[:digit:] 代表数字,即0~9
[:graph:] 除了空格符(空格键与[Tab]按键)外的其他所有按键
[:lower:] 代表小写字母,即a~z
[:print:] 代表可以被打印的字符
[:punct:] 代表标点符号,即“ ‘ ?!;:# $
[:upper:] 代表大写字母,即A~Z
[:space:] 任何会产生空白的字符,包括空格键、[Tab]等
[:xdigt:] 代表十六进制的数字类型,包括0~9、A~F、a~f等

      二,扩展正则表达式特殊符号总结:

扩展表达式特殊符号
字符                              意义与范例
+

意义:重复【一个或一个一个以上】的前一个字符

eg:查找gogle,google,goooogle等的字符串。o+即代表【一个以上的o】;所以下面的执行结果为打印出2、3、4行:

[20:30:21 root@centos7 shiyan]#cat f11.txt
ggle
gogle
google
gooogle
g0000gle

[20:30:25 root@centos7 shiyan]#egrep -n 'go+gle' f11.txt
2:gogle
3:google
4:gooogle

 

意义:【零个或一个】的前一个字符

eg:查找ggle和gogle这两个字符串。o?代表【空的或1个o】,所以下面的执行结果为打印出1、2行:

[20:39:38 root@centos7 shiyan]#cat f11.txt
ggle
gogle
google
gooogle
g0000gle

[20:39:42 root@centos7 shiyan]#egrep -n 'go?gle' f11.txt
1:ggle
2:gogle

 

|

意义:用或(or)的方式找出数个字符串

eg:查找ggle和google这两个字符串,注意,’|‘代表的式或的关系,所以下面的执行结果为打印出1、3行:

[20:45:10 root@centos7 shiyan]#cat f11.txt
ggle
gogle
google
gooogle
g0000gle

[20:45:18 root@centos7 shiyan]#egrep -n 'ggle|google' f11.txt
1:ggle
3:google

 

()

意义:找出群组字符串

eg:查找google和g00gle这两个字符串,以位g与gle是相同的,所以我们可以i将00与oo列于()中,并用 |分开,就可以打印该组合:

[20:51:03 root@centos7 shiyan]#cat f11.txt
ggle
gogle
google
gooogle
g0000gle
g00gle

[20:51:08 root@centos7 shiyan]#egrep -n 'g(00|oo)gle' f11.txt
3:google
6:g00gle

 

()+

意义:多个重复群组的判别

eg;将[googlegleglegoo]用echo打印出来:

[20:52:18 root@centos7 shiyan]#echo googlegleglegoo |egrep 'goo(gle)+goo'
googlegleglegoo

上面例子意思是说,找开头是goo,结尾是goo,中间有一个以上的gle字符串的意思。

   三,test判断语句参数:

           1,关于某个文件名的【文件类型的判断】,如test -e filename表示文件是否存在:

参数                                   代表的意义
-e 该【文件名】是否存在(常用)
-f 该【文件名】是否存在且为文件(file)(常用)
-d 该【文件名】是否存在且为目录(directory)(常用)
-b 该【文件名】是否存在且为一个block device设备
-c 该【文件名】是否存在且为一个character device设备
-S 该【文件名】是否存在且为一个socket文件
-p 该【文件名】是否存在且为一个FIFO(匹配)设备
-L 该【文件名】是否存在且为一个链接文件

           2,关于文件权限的检测,如test -r filename 表示是否可读:

参数                                        代表意义
-r 检测该文件是否存在且具有【可读】的权限
-w 检测该文件是否存在且具有【可写】的权限
-x 检测该文件是否存在且具有【可执行】的权限
-u 检测该文件是否存在且具有【SUID】的属性
-g 检测该文件是否存在且具有【SGID】的属性
-k 检测该文件是否存在且具有【Sticky】的属性
-s 检测该文件是否存在且具为【非空文件】

           3,两个文件之间的比较,如:test file1 -nt file2:

参数                                     代表意义
-nt (newer than )判断file1是否比file2新
-ot (older than)判断file1是否比file2旧
-ef 判断file1与file2是否为同一文件,可用在判断hard link 的判断上。主要意义是判定,两个文件是否指向同一个inode

         4,关于两个整数之间的判定,例如test n1 -eq n2 :

   

参数                                       代表意义
-eq 两个数值相等(equal)
-ne 两个数值不等(not equal)
-gt n1大于n2(greater than)
-lt n1小于n2   (less than)
-ge n1大于等于n2 (greater than or equal)
-le n1小于等于n2 (less than or equal)

             5,判定字符串的数据:

参数                         代表意义
test -z string 判断字符串是否为0?若string为空字符串,则为true
test -n string  判断字符串是否非为0?若string为空字符串,则为false
test str1==str2 判定str1是否等于str2,若相等,则返回true
test str1!=str2 判定str1是否不等于str2,若相等,则返回false

          6,多重条件判定,例如:test -r filename -a -x filename

参数 代表意义
-a [and]两条件同时成立。例如test -r file -a -x file,表示file同时具有了r与x权限时,才返回true
-o (or)两条件任一个成立。例如test -r file -o -x file,则file同时具有r或x权限时,就可返回true
反相状态,例如test  ! -x file,当file不具有x权限时,返回true

                              

 

 

 

 

 

 

 

你可能感兴趣的:(linux进阶,正则表达式,test判断语句,参数,特殊符号)