linux中 通配符与正则表达式详解

  • 通配符

  • 正则表达式

通配符:

       linux命令中通配符通常用在路径中文件名的匹配上

        符号                 内容

         *                      0个或多个字符(相当于正则表达式中.*)

        ?                       匹配任意一个字符

        [ ]                      同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b,                                    c, d 这四个任何一个

        [-]                      若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字

        [^ ]                    若中括号内第一个字符为符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,要是非 a, b, c                                  的其他字符就行。

       [:space:]            空白字符

       [:punct:]             标点符号

       [:lower:]             小写字母

       [:upper:]            大写字母

       [:alpha:]            大小写字母

       [:digit:]               数字

       [:alnum:]:        数字和大小写字母

     除了这些通配符之外,shell环境中还有一些特殊的符号

       符号                 内容

        #                     批注符号:这个最常被使用在 script 当中,规为说明!

        \                      转义符号:将『特殊字符或通配符』还原成一般字符

        |                      管道 (pipe):分个两个管道命令的界定;

        ;                      连续指令下达分隔符: (注意!与管道命令不相同)  

        ~                      用户家目录

        $                      取用变量前导符:亦即是取用变量前需要加的变量取代值

        &                      工作控制 (job control):将指令变成成背景下工作

        !                        逻辑运算意义上的『非』 not 癿意思!

        /                        目录符号:路径分隔的符号

       >, >>                 数据流重导向:输出导向,分删是『叏代』不『累加』

       <, <<                 数据流重导向:输入导向 (这两个留待下节介绍)

       ' '                       单引号不具有变量置换的功能

      " "                       具有发量置换的功能!

      ` `                       两个『 ` 』中间为可以执行的指令,亦可使用 $( )

     ( )                       在中间为子 shell 的起始不结束

     { }                       在中间为命令区块的组合!

正则表达式

         linux命令中正则表达式通常用在文件内容的匹配上

         linux文本处理三剑客:

         grep:文本过滤(pattern:模式)工具,用来将文件内容中匹配的行过滤出来(cut过滤列) grep,egrep,fgrep不支持正                     则表达式搜索

         sed:stream editor,文本编辑工具

         awk:linux上的实现gawk,文档报告生成器

例:

     空行:" ^$"   包含空格的无字符行:"^[[:blank:]]$"      

分组:例

(注:当给括号中的第一个加锚定时,   后面的\1 匹配的是第一个括号里的内容,锚定效果并不能生效)

[abc.]   括号中的.  不会当做特殊符号,只是表示 .这个字符,不需要转义

egrep及扩展的正则表达式

猜你喜欢

转载自blog.csdn.net/qq_38632451/article/details/81410690