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 11:40
下一篇 2016-04-11 11:49

相關推薦

  • linux的tty

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/140012 最近做了一個小測試,得到了以下結論 測試linux發行版本:rhel AS4.0 環境:VMware 5.0 目的:修改 vi /etc/initt…

    Linux干貨 2015-03-26
  • 有關shell腳本

    SHELL腳本 在Linux運維工作中有著大量的重復性質的工作,比如同時給很多臺的服務器備份,查看多臺的內存情況,等等。這樣的情況下總不能一個一個服務器自己去看,那樣耗時,費力,還容易出錯。所以編寫程序來做這些事情就成了必要的工作。而SHELL就是完成這項工作的。   腳本第一行的開頭寫上#!/bin/bash 這是屬于格式性質的,作用在于加上執行…

    2017-08-12
  • linux系統初識

          在完成centos7安裝后,使用root登陸,查看了解當前根目錄。由于root權限高,建議新增用戶。執行useradd name命令。登陸后查看是否當前用戶用whoami命令。     使用df命令了解系統分區情況以及顯示內存free命令。   &…

    2017-07-16
  • linux網絡屬性管理

    Linux網絡屬性配置 計算機網絡:TCP/IP:協議棧(使用)ISO,OSI:協議棧(學習) MAC:Media Access Control48bits:ICANN:24bits, 2^24地址塊:2^24 網橋(bridge):MAC地址表靜態指定:動態學習:根據原地址學習; 交換機(switch):多端口網橋; IP(Internet protoco…

    Linux干貨 2017-10-14
  • N26-博客作業-week7

    1、創建一個10G分區,并格式為ext4文件系統;      (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;     ~]# fdisk /dev/sda Welcome to fdisk (util-li…

    Linux干貨 2017-03-19
  • centos7源碼編譯安裝Apache2.4.25服務

    ?一、源碼包下載 ?二、安裝開發環境以及編譯環境 ?三、編譯安裝以及報錯排查 ?四、調試Apache服務 前言: 本文主要介紹了在Centos7環境中如何通過源碼編譯的方式安裝Apache服務(也就是我們的httpd服務)由于本文整理時間有限,所以難免有些紕漏之處,歡迎大家在閱讀后在評論區指出,本人看到會在第一時間修改文中錯誤的地方。 為什么要進行源碼編譯安…

    2017-04-22
欧美性久久久久