grep &&正則表達式&&通配,元字,轉義符

grep 基于正則表達式的查詢

1正則表達式: 正則表達式是通過使用特殊的字符所編寫的模式,一些字符不表示字符的表面意思,具有控制和通配的功能.

使用正則表達式進行匹配具有兩種方法:一是通過使用特殊的元字符進行字符匹配;二是使用次數匹配。

一, 正則表達式的特殊字符(元字符) : 

#建議再溫習一下之前所學的統通配符,對比一下,防止混淆。

(1)元字符(正則表達式:字符匹配) :元字符不表示本身的含義,用于額外功能的描述。

.  :匹配任意單個字符       #注意是單個字符

[] :指定范圍內的任意單個字符。 #注意是單個字符

[^] :匹配在指定范圍外的任意單個字符。 ^ 托字符在括號之外的含義是錨定行首。

[] 中可以使用這樣的方式(這個和通配符的含義是一樣的):

[:digit:] :指所有的數字

[:lowwer:]  :指所有的小寫字母

[:upper:] :指所有的大寫字母

[:alpha:] :指所有的字母(不區分大小寫)

[:alnum:] :指所有的數字和字母

[:punct:] :指所有的標點符號

[:space:] :指所有的空白字符(tab鍵還有空格都屬于space)

次數匹配:用于在指定次數的字符后面,用于指定前面的字符要出現的次數

* :匹配前面的字符任意次 ;注意的是默認情況下,正則表達式是在貪婪模式下,就是盡可能的多進行匹配。

          元字符1.png  

        位置匹配:對特定位置進行定位

                ^ :行首錨定 ,用于模式的最前面

                $ :行尾錨定,用于模式的最后面

                ^PATTERN$ :用于匹配整行內容。

                \<或者\b:用于詞首錨定 #注意是整個詞的錨定

                \>或者\b:用于詞尾錨定

(2) 通配符(作為對比和溫習)

* :匹配0個或者多個字符

? :匹配任何單個字符

~ :當前用戶的家目錄

~+ :當前工作目錄

~- :前一個工作目錄

[0-9] :匹配一個數字范圍

[a-z] :匹配大寫和小寫字母 比如[a-c] a , A ,b ,B ,c 

[A-Z] :匹配大寫字母

[wxc] :匹配列表中任何一個字符

[^wxc] :匹配列表之外任何一個字符

[:digit:] :指所有的數字

[:lowwer:]  :指所有的小寫字母

[:upper:] :指所有的大寫字母

[:alpha:] :指所有的字母(不區分大小寫)

[:alnum:] :指所有的數字和字母

[:punct:] :指所有的標點符號

[:space:] :指所有的空白字符(tab鍵還有空格都屬于space)

(3)轉義符

有時候,我們想讓 通配符,或者元字符 變成普通字符,不需要使用它。那么這里我們就需要用到轉義符了。

shell提供轉義符有三種。

‘’(單引號) 又叫硬轉義,其內部所有的shell 元字符、通配符都會被關掉。注意,硬轉義中不允許出現’(單引號)。

“”(雙引號) 又叫軟轉義,其內部只允許出現特定的shell 元字符:$用于參數代換 `用于命令代替

\(反斜杠)  又叫轉義,去除其后緊跟的元字符或通配符的特殊意義。

?。。∥谋竞臀募遣恢С终齽t表達式?。?!

grep 是一種文本的過濾器,它是根據指定的模式(就是所謂的正則表達式限定)進行對文本逐行的進行查詢,而后顯示出匹配的行。

格式:grep [OPTION] PATTERN [FILE]

–COLOR 高亮顯示匹配到的字符。

-v 顯示不能被pattern匹配到的行,相當于取反。

-i 忽略字符的大小寫

-o 只顯示被匹配到的字符串

-q 靜默模式,不輸出任何信息 #可以使用echo $? 查看上條命令的執行是否成功。

-n 顯示匹配到的內容在第幾行

-A :顯示匹配內容的后面#行

-B 顯示匹配內容的前面的幾行,如果匹配到的為第一行,則前面的為空。

-C 相當于-AB,顯示匹配內容的前后#行

-E 相當與egrep,支持擴展正則表達式

grep選項.png


附 :cut ,head ,tail的用法

        

之所以附這三個命令的用法是因為這三個命令和grep時常一起使用,用于對grep文本過濾的后的取舍。

    cut :是文本切割的命令,用某種分隔符進行切割,按照列進行取其內容。 # 某種分隔符 :比如說 /etc/passwd 下的文件 ,user:UID:GID:…

        這樣就可以使用: 作為分隔符 ,方便取內容,分隔符不是固定的,是按個人需求進行設定。

        -d   : 后面加上設定的分隔符

        -f :以分隔符分出的列進行劃分,在f后跟數字代表取得第幾列。

        比如:取出用戶的UID號 :  # 以:為分隔符,UID處于第三列,使用f3。

        cut1.png

    head 取grep取出的內容的開頭幾行 ,tail取得是內容的后面幾行,在命令后面跟上行數就可以,通常使用管道。

    -c # :指定獲取前#字節    # 取字節可以把需要取得內容使用文本編譯器(nano,vi)等顯示,可以查看其字節。

    -n # :指定獲取前#行

    -# :指定行數

    head,tail2.png

        


原創文章,作者:zhong,如若轉載,請注明出處:http://www.www58058.com/29472

(0)
zhongzhong
上一篇 2016-08-05
下一篇 2016-08-05

相關推薦

  • 開始學習總結的一些基本知識點

       第一VNC軟件(面授班課堂用的),這款軟件采用C/S架構(client/sever客戶端和服務器端)還有VNC協議(virtual Network computing虛擬網絡計算)協議。雖說這款軟件對網絡班沒有實際用途,但自己了解下這款軟件的構成也是不錯的。    第二開始學習需要的虛擬機軟件其中包括VMWARE…

    Linux干貨 2016-10-29
  • Centos7 編譯安裝 zabbix3.0

    服務安裝配置: 系統版本:CentOS Linux release 7.2.1511 (Core)   zabbix 安裝 關閉firewall:   systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall開機…

    Linux干貨 2016-06-23
  • 關于大型網站技術演進的思考(十四)–網站靜態化處理—前后端分離—上(6)

    原文出處: 夏天的森林   前文講到了CSI技術,這就說明網站靜態化技術的講述已經推進到了瀏覽器端了即真正到了web前端的范疇了,而時下web前端技術的前沿之一就是前后端 分離技術了,那么在這里網站靜態化技術和前后端分離技術產生了交集,所以今天我將討論下前后端分離技術,前后端分離技術討論完后,下一篇文章我將會以網站 靜態化技術的…

    Linux干貨 2015-03-03
  • Linux磁盤管理命令

    Linux有著管理各種存儲設備的強大能力。Linux把所有磁盤都當作文件管理,從而簡化我們對其進行的讀寫等操作。 IDE接口的硬盤在Linux中命名為:/dev/hd{a|b|c……},比如/dev/hda; 其他硬盤比如SATA接口的硬盤命名為:/dev/sd{a|b|c……},比如/dev/sda。 注:{…

    Linux干貨 2015-12-06
  • 磁盤管理2——文件系統掛載和swap文件系統以及磁盤管理工具

    文件系統的使用: 首先要“掛載”:mount命令和umount命令 根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此管理操作即為“掛載”,此目錄為“掛載點” 掛載點:MOUNT_POINT,用于作為另一個文件系統的訪問入口     (1)事先存在   …

    Linux干貨 2016-08-29
  • 第一周linux學習總結

    1、描述計算機的組成及其功能
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    Linux干貨 2017-12-04
欧美性久久久久