bash通配符和正則表達式元字符部分歸納

Linux中有各種各樣的字符,而且在不同環境和不同命令之下含義也不同

作為新手,決定先歸納學到的符號,方便后面學習厘清它們之間的關系。


glob 簡化了的正則表達式

bash默認通配符:

? :只匹配一個任意字符;

* :匹配零個或多個任意字符;  

[^] :方括號及其中^中的取反

[abc]:匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a,要么匹配一個 b,要么匹配一個 c);

如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數字)。


grep基本正則表達式元字符:

.:  匹配任意單個字符;

[]: 匹配指定范圍內的任意單個字符

[^]:匹配指定范圍外的任意單個字符

*:匹配前面的字符任意次;

.*:任意長度的任意字符;

\?:匹配其前面的字符0或1次;即前面的可有可無;

\+:匹配其前面的字符至少1次;

\{m\}:匹配前面的字符m次;

\{m,n\}:匹配前面的字符至少m次,至多n次;

\{0,n\}:匹配前面的字符至多n次;

\{m,\}:匹配前面的字符至少m次;

^:行首錨定;用于模式的最左側;

$:行尾錨定;用于模式的最右側;

\< 或 \b:詞首錨定;用于單詞模式的左側;

\> 或 \b:詞尾錨定;用于單詞模式的右側;

\<PATTERN\>:匹配整個單詞;

\(\):將一個或多個字符捆綁在一起,當作一個整體進行處理;


egrep及擴展的正則表達式

egrep = grep -E

擴展正則表達式的元字符:

字符匹配:

.

[]

[^]

*

?: 0或1次;

+:1次或多次;

{m}:匹配m次;

{m,n}:至少m,至多n次;

^

$

\<, \b

\>, \b

()

后向引用:\1, \2, …


根據以上歸納,需要區分的符號

glob和grep的*符號,前者直接任意字符,后者匹配前一個字符任意次數

grep和egrep的?,+,{m,n},(),前者需要將這些字符轉義,后者不需要


附其它一些bash符號說明

子字符類

[:alpha:]

匹配當前歸類中的大寫和小寫字母字符。例如,'[0-9]{3}[[:alpha:]]{2}' 匹配三個數字,后跟兩個字母。

[:alnum:]

匹配當前歸類中的數字、大寫和小寫字母字符。例如,'[[:alnum:]]+' 匹配含有一個或多個字母和數字的字符串。

[:digit:]

匹配當前歸類中的數字。例如,'[[:digit:]-]+' 匹配含有一個或多個數字或橫線的字符串。同樣,'[^[:digit:]-]+' 匹配含有一個或多個不是數字或橫線的字符的字符串。

[:lower:]

匹配當前歸類中的小寫字母字符。例如,'[[:lower:]]' 不匹配 A,因為 A 為大寫。

[:space:]

匹配單個空格 (' ')。

[:upper:]

匹配當前歸類中的大寫字母字符。例如,'[[:upper:]ab]' 與以下其中一項匹配:任何大寫字母、a 或 b。

[:whitespace:]

匹配一個空白字符,例如,空格、制表符、換頁符和回車符。

[:ascii:]

匹配任何七位的 ASCII 字符(0 到 127 之間的順序值)。

[:blank:]

匹配一個空白區或水平制表符。

[[:blank:]] 等效于 [ \t]。

[:cntrl:]

匹配順序值小于 32 或字符值為 127 的 ASCII 字符(控制字符)??刂谱址〒Q行符、換頁符、退格符,等等。

[:graph:]

匹配打印字符。

[[:graph:]] 等效于 [[:alnum:][:punct:]]。

[:print:]

匹配打印字符和空格。

[[:print:]] 等效于 [[:graph:][:whitespace:]]。

[:punct:]

匹配其中一個字符: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.

[:punct:] 子字符類不能包括當前歸類中可用的非 ASCII 標點字符。

[:word:]

匹配當前歸類中的字母、數字或下劃線字符。

[[:word:]] 等效于 [[:alnum:]_]。

[:xdigit:]

匹配字符類 [0-9A-Fa-f] 中的字符。

#  注釋說明

$ 變量符號

\ 轉義字符 一般用在寫很長的通配符上 我們可以把特殊字符或者通配符 轉義成一般的字符

; 連續命令執行分割符號,例子 cp /etc /tmp ;ls  /tmp ;cd etc ;rm etc

''  反點號中間的先執行

/  目錄符號,路徑分割

& 把作業放到后臺去執行

~ 用戶的主文件夾

!邏輯運算上的非

原創文章,作者:Net18_木水,如若轉載,請注明出處:http://www.www58058.com/14506

(2)
Net18_木水Net18_木水
上一篇 2016-04-11
下一篇 2016-04-11

相關推薦

  • rpm軟件包管理

    軟件包管理 軟件運行環境 API   應用程序開發接口 ABI   二進制接口 Rpm包命名方式 Name-version-release-arch-rpm 例如 zziplib-devel-0.13.162-5.el7.i686.rpm zziplib :主包名 dewel:次包名 0.13.162: 主版…

    Linux干貨 2016-08-24
  • linux基礎之bash特性知識點

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     Linux 一切皆文件。個人理解 在linux下的命令操作都算是對文件操作     那么文件管理命令類命令可以分為下面幾類     目錄操作: &nbs…

    Linux干貨 2016-09-24
  • 權限管理

    權限 權限就是用戶或者組對文件或者目錄所擁有的能力,所能執行的操作。 權限的分配: 通過ls -l file這個命令可以查看文件或者目錄的詳細信息:     [root@localhost home]# ls -l /root/   &nb…

    Linux干貨 2016-08-05
  • 馬哥教育網絡21期+第三周練習博客

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f 1 | uniq 2、取出最后登錄到當前系統的用戶的相關信息。 [root…

    Linux干貨 2016-07-26
  • lvs-nat集群

    lvs-nat算法 nat模型樣式 vs服務器:公網地址 172.18.250.253 私網地址 192.168.57.129 (DIP) 各私網服務器網關指向服務器DIP 各私網服務器做集群:web (telnet,ssh) 私網服務器使用httpd實現 rs私網服務器1 centos7 ip:192.168.57.132 rs私網服務器2 centos6…

    Linux干貨 2017-05-15
  • bash的基礎特性

    1、Bash的命令補全      使用tab鍵可以實現命令補全或者路徑補全 2、Bash的命令行展開      使用~,可以展開為用戶的家目錄;             例如#cd ~ 表示切換目錄到當前用戶家目錄中   &nbs…

    Linux干貨 2016-11-02
欧美性久久久久