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 元字符:$用于參數代換 `用于命令代替

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

?。?!文本和文件是不支持正則表達式?。?!

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 16:09
下一篇 2016-08-05 16:09

相關推薦

  • 馬哥教育網絡班21期第六周作業

    詳細總結VIM編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit :%s/^[[:space:]]\+/#/…

    Linux干貨 2016-08-22
  • class-6 用戶組管理(二) 權限管理

                      一、用戶組管理  1、設置修改用戶密碼密碼      設置密碼     passwd [OPT…

    Linux干貨 2016-08-05
  • 談談對于vmware Workstation 網絡連接三種模式的認識.

    簡介: VM(VMware Workstation簡稱VM,后面都將用VM代替闡述)是一款功能強大的虛擬化軟件.VM支持在 單一的桌面上同時運行多款不同的操作系統,能夠模擬完整的網絡環境,支持pxe功能.實時快照,等等多種強 大的功能.能夠測試軟件和部署新的業務測試.同時節約了很多資源.節約了企業成本.所以對于廣大的互聯網 從業者是不可多得的好工具. 本文中…

    Linux干貨 2015-08-24
  • linux中的馬里奧之重定向與管道詳解

    你背單詞時 阿拉斯加的鱈魚正躍出水面 你算數學時 太平洋彼岸的海鷗振翅掠過城市上空 你晚自習時 極圖中的夜空散漫了五彩斑斕 但是少年你別著急 在你為自己未來踏踏實實地努力時 那些你感覺從來不會看到的景色 那些你覺得終身不會遇到的人 正一步步向你走來。          ——網易云熱評《Something Ju…

    2017-07-22
  • 路漫漫其修遠兮第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 從dawning大濕兄那里借來的圖,如下: 啟動過程 (PC架構) POST –> Boot Sequence(BIOS) –> Boot Loader (MBR)–>GRUB—> Kernel(ramdisk) &#821…

    Linux干貨 2017-02-24
  • N25 – Week6 作業

    春節過去了,我們又開學了,又可以寫博客,做作業了,好開心. 下面是第6周的博客作業: 請詳細總結vim編輯器的使用并完成以下練習題: 1. 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc/sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@dhcp-10-129-6-166 ~]# …

    Linux干貨 2017-02-13
欧美性久久久久