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

    xiaoxiao2023-11-14  160

            在学习正则表达式和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)-gtn1大于n2(greater than)-ltn1小于n2   (less than)-gen1大于等于n2 (greater than or equal)-len1小于等于n2 (less than or equal)

                 5,判定字符串的数据:

    参数                        代表意义test -z string判断字符串是否为0?若string为空字符串,则为truetest -n string 判断字符串是否非为0?若string为空字符串,则为falsetest str1==str2判定str1是否等于str2,若相等,则返回truetest 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

                                  

     

     

     

     

     

     

     

    最新回复(0)