Linux - 常用通配符


linux常用通配符有* ,?,[ ],[^],[:space:],[:punct:],[:lower:],[:upper:],[:digit:],[:alnum:]等等。

在linux中,有通配符及正則表達式,那么什么是通配符和正則表達式,什么時候用?
 

通配符

它是由shell解析,並且一般用於匹配文件名,實際上就是shell解釋器去解析的特殊符號,linux系統通配符有幾下幾種:
*:匹配任意多個字符
?:匹配任意一個字符
[...]:匹配中括號內出現的任意一個字符
[!...]:不匹配中括號內出現的任意一個字符
 
一般出現在要shell命令或腳本中,匹配特定的文件名
 
 

正則表達式

它是一個字符匹配標准,一些命令工具按此標准實現字符匹配,根據命令支持的匹配功能可分為基礎正則表達式和擴展正則表達式,常用於支持正則表達式的工具,如sed,grep,awk...
有如下一些常用的匹配元字符:
 
字符匹配
.:匹配任意單個字符
*:匹配其前面一個字符出現任意次
?:匹配其前面的字符1次或0次
+:匹配其前面一個字符出現至少一次(在擴展正則表達式中)
 
位置匹配
^:錨定行首
$:錨定行尾
\<或\b:錨定詞首,其后面的任意字符必須作為單詞首部出現
\>或\b:錨定詞尾,其前面的任意字符必須作為單詞尾部出現
\B:非單詞的開頭或結尾
^$:空白行
 
分組() :
(ab)* : 匹配ab這個分組出現任意次
\1:引用第一個左括號以及與之對應的右括號所包括的所有內容,同理還有\2,\3
 
特殊子字符類:
[:alnum:] :任何字母和數字
[:alpha:] :任何字母
[:cntrl:] :控制字符. 在ASCII表中對應八進制000 到 037, 和177 ('DEL').
[:digit:] :任何數字
[:graph:] :匹配打印字符,相當於'[:alnum:]' +'[:punct:]'.
[:lower:] :小寫字母
[:print:] :可打印字符,相當於 '[:alnum:]', '[:punct:]', 和space.
[:punct:] 標點符號,'! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ' { | } ~'
[:space:] 空白字符,tab, newline, vertical tab, form feed, carriage return, and space.
[:upper:] 大寫字母
[:xdigit:] 任何16進制的數字,相當於[0-9a-fA-F]
所以:^[[:space:]]*$ :匹配沒有任何內容的行
 
需要注意:[]中的特殊字符如.已經失去了其特殊含義,和方括號中的普通字符[abc]一樣。

方法/步驟

 
  1. 1

    *  匹配任意長度的任意字符

    ?匹配任意單個字符

    比如我們創建abc,a1c,a1bc,a12c四個文件(touch abc a1c a1bc a12c)

    ls a*c  表示查看a開頭c結尾的所有文件(abc,a1c,a1bc,a12c)

    ls a?c  表示查看a開頭c結尾中間帶有一個字符的文件(abc,a1c)

    Linux下通配符的使用介紹
  2. 2

    [ ]匹配制定范圍內的單個字符[^]匹配制定范圍外的單個字符

    ls a[0-9]c             列出a開頭c結尾中間帶有一個數字的文件

    ls a[0-9][a-z]c     列出a開頭c結尾中間帶有一個數字和一個字母的文件

    ls a[^0-9]c             列出a開頭c結尾中間帶有一個數字的文件

    其輸出結果如下圖

    Linux下通配符的使用介紹
  3. 3

    [:space:]匹配單個空白字符

    [:punct:]匹配單個標點符號字符

    [:lower:]匹配單個小寫字母字符

    [:upper:]匹配單個大寫字母字符

    [:digit:]匹配單個數字字符

    [:alnum:]匹配單個數字和字母字符

    以上通配符在使用時還需在加一個[ ]

    例如:

    list a[[:space:]]b  列出a空格b的文件

    list a[[:space:]][[:space:]]  列出a空格空格b的文件

    Linux下通配符的使用介紹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM