Linux系統學習之正則表達式筆記

一、正則表達式

      在計算機科學中,正則表達式是用來描述或匹配一系列符合某個句法規則的字符串;在文本編輯器或某些工具(例如bash環境)中,正則表達式通常被用檢索那些符合某個模式的文本內容。在linux中,正則表達式是由一類字符所書寫的模式。通過實現定義好的模式來實現對bash環境中所需要字符串的過濾。

      正則表達式是由一系列的普通字符和一些元字符組成。普通字符主要包括了大小寫字母和數字。元字符則具有特殊的含義。它不表示字符本身的意義而用於額外的一些功能性的描述。正則表達式有基本正則表達式和擴展正則表達式之分,下面我將列出在linux中常用的一些常用的元字符,並用相關的實例來進行講解:

1.基本正則表達式

***

2.擴展正則表達式

以下主要列出不同於基本正則表達式的部分元字符


3.在linux中還有其它的一些轉義字符,但這裏僅對常用的進行了一些列舉和解釋。有興趣的朋友可以通過“man 7 regex”查看man文檔中提供的幫助系統。

二、grep命令的使用

      下面我來向大家介紹如何通過grep命令來使用正則表達式進行相應的模式匹配。首先我來介紹一下grep命令的基本使用。

      grep (Global Search Regular Expression and Printing),表示全面搜索正則表達式並進行打印,是一種強大的文本搜索工具,它能夠使用正則表達式搜索文本,並把匹配的行打印出來。grep有三種,包括grep、egrep和fgrep。

分別表示如下:


三、以下我將在rhel6.4上使用具體的實例來顯示grep命令如何使用正則表達式來進行模式匹配。

使用前在當前bash中對grep設置一個別名,命令如下:

aliasgrep='grep --color=auto'

1.顯示/etc/passwd文件中以不區分大小寫的s開頭的行。

grep"^[sS]"/etc/passwd

egrep"^(s|S)"/etc/passwd

2.顯示默認shell爲bash,且其用戶ID號最小的用戶的用戶名。

grep"/bin/bash$"/etc/passwd| sort-n -t: -k3 | cut-d: -f1

3.顯示/etc/rc.d/rc.sysinit中以#開頭,且後面跟一個或多個空白字符,而後又跟了任意非空白字符的行。

grep"^#[[:space:]]{1,}[^[:space:]]"/etc/rc.d/rc.sysinit

egrep"^#[[:space:]]+[^[:space:]]"/etc/rc.d/rc.sysinit

4.顯示/etc/rc.d/rc.sysinit中符合任意單個字符後面跟了個n,n後面有任意長度的任意字符,而後是任意單個字符後面跟了個n,但後面的n之前的字符要與前面的n之前的字符相同。

grep"(.n)".*1" /etc/rc.d/rc.sysinit

5.顯示test.txt文件中的,1位數,或2位數。

grep-w "[0-9]{1,2}"test.txt

grep"<[0-9]{1,2}>"test.txt

6.顯示ifconfig命令結果中的1-255之間的整數。

ifconfig| egrep"<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>"

7.匹配ifconfig命令中的IP地址,要求匹配範圍爲1.0.0.1~~223.255.255.254

ifconfig| egrep-o --color "<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])>"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章