歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> LINUX中如何使用正則表達式

LINUX中如何使用正則表達式

日期:2017/3/3 16:00:15   编辑:關於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。

分別表示如下:

本文URL:http://www.bianceng.cn/OS/Linux/201410/45620.htm

三、以下我將在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之前的字符相同。

本文URL:http://www.bianceng.cn/OS/Linux/201410/45620.htm

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])\>"
Copyright © Linux教程網 All Rights Reserved