導航:首頁 > 編程系統 > linux正則匹配

linux正則匹配

發布時間:2023-09-08 06:17:50

linux正則表達式

一.linux文本查找命令

在說linux正規表達式之前,還介紹下linux中查找文本文件常用的三個命令:

1.grep : 最早的文本匹配程序,使用POSIX定義的基本正則表達式(BRE)來匹配文本。

2.egrep : 擴展式grep,其使用擴展式正規表達式(ERE)來匹配文本。

3.fgrep : 快速grep,這個版本匹配固定字元串而非正則表達式。並且是唯一可以並行匹配多個字元串的版本。

如下簡單的介紹grep命令:

語法格式:

grep [options ...] pattern-spec [files ...]

用途:

匹配一個或多個模式的文本行。

options:

-E : 使用擴展正則表達式進行匹配, grep -E 或取代 egrep 命令。

-F : 使用固定字元串進行匹配, grep -F 或取代傳統的fgrep命令。

-e : 通常第一個非選項的參數認為是要匹配的模式,也可以同時提供多個模式,只要將其放入單引號,並用換行字元分隔他們。

模式以減號開頭時,為防止混淆其為選項,-e選項說明其後的參數為模式,即使他以減號開頭。

-f : 從pat-file文件讀取模式作為匹配。

-i : 模式匹配時忽略大小寫差異。

-l : 列出匹配模式的文件名稱,而不是列印匹配的行。

-q : 靜默的,如果匹配成功,不將匹配的行輸出到標准輸出;否則即是不成功。

-s : 不顯示錯誤信息,通常與-q並用。

-v : 顯示不匹配模式的行。

說明:可以同時查找多個文件中的內容,當指定多個文件時,每個顯示出的文件行前會有文件名加一個冒號標識其來自哪個文件。

可以使用多個-e 或 -f 選項,建立要查找的模式列表。

二.正則表達式簡要介紹

1.正則表達式的組成

(1).一般字元:沒有特殊意義的字元

(2).特殊字元(meta字元):元字元,有在正則表達式中有特殊意義

2.如下講下正則表達式中的常見meta字元

(1).POSIX BRE與ERE中都有的meta字元:

\   :  通常用於打開或關閉後續字元的特殊含義,如\(...\)與\{...\}

.   :   匹配任何單個字元(除NUL)

*  :   匹配其前的任何數目或沒有的單個字元,例: . 表示任一字元, 則 .* 匹配任一字元的任意長度

^  :   匹配緊接著的正則表達式,BRE中僅在正則表達式的開頭有特殊的含義,ERE中在任何位置都有特殊含義

$  :   匹配前面的正則表達式,在字元串或者行結尾處。BRE中僅在正則表達式的結尾處有特殊的含義,ERE中在任何位置都有特殊含義

[]  :   匹配方括弧內的任一字元,其中可用連字元(-)指的連續字元的范圍;^符號苦出現在方括弧的第一個位置,則表示匹配不在列表中的任一字元,

(2).POSIX BRE中才有的字元:

\{n,m\} : 區間表達式,匹配在它前面的單個字元重現的次數區別。\{n\}指重現n次;\{n,m\}指重現n至m次;

\( \) : 保留空間,可以將最多9個獨立的子模式存儲在單個模式中。如\(ab\).*\1 : 指匹配ab組合的兩次重現,中間可存在任意數目的字元。

\n : 重復在\(與\)方括弧內第n個子模式至此點的模式。

(3).POSIX ERE中才有的字元:

{n,m} : 與BRE的\{n,m\}功能相同

+ : 匹配前面正則表達式的一個或多個擴展

? : 匹配前面正則表達式的零個或一個擴展

| : 匹配|符號前或後的正則表達式

( ) : 匹配方括弧括起來的正則表達式群

(4). 方括弧([])表達式

4.1.字元集  [:  :]

標識字元集,有如下幾種:

[::alnum] : 數字字元[:digit:] : 數字字元[:punct:] : 標點符號字元

[:alpha:] : 字母字元[:graph:] : 非空格字元[:space:] : 空格字元

[:blank:] : 空格與定位字元[:lower:] : 小寫字母字元[:upper:] : 大寫字母字元

[:cntrl:] : 控制字元[:print:] : 可顯示的字元[:xdigit:] : 16進制數字

 4.2.排序符號

指將多個字元視為一個符號,如[.ch.]即將ch視為一個符號

4.3.等價字元

認為多個字元相等,如[=e=]在法文的locale里,可匹配於多種與e相似的字元,此處不再列出。

說明:這三種構造除其自身的方括弧之外,還必須使用額外的方括弧括起來。

例 : [[:alpha:]!] : 匹配任一英文字母或感嘆號。

[[.ch.] : 匹配ch排序元素,而不匹配單獨的字母c或h.

 3.簡單正規表達式匹配案例

china  : 匹配此行中任意位置有china字元的行

^china : 匹配此以china開關的行

china$ : 匹配以china結尾的行

^china$ : 匹配僅有china五個字元的行

[Cc]hina : 匹配含有China或china的行

Ch.na : 匹配包含Ch兩字母並且其後緊跟一個任意字元之後又有na兩個字元的行

Ch.*na : 匹配一行中含Ch字元,並且其後跟0個或者多個字元,再繼續跟na兩字元

二.實例

如下通過常用實例來學習BRE和ERE匹配,源文件url.txt內容如下:

www..com

http://www..com

https://www..com

http://wwwcom

.com



1.url匹配

匹配以http或者https開頭,並且其後為:並且含有.的串

BRE匹配:

grep '^https\{0,1\}.*\..*' url.txt

ERE匹配:

grep -E '^https?.*\..*' url.txt

匹配結果如下:

http://www..com

https://www..com

2.Email匹配

示例文件內容為:

hfutwyy@qq.com

aaaa@

[email protected]

[email protected]

@@.com

匹配以字母數字或者下劃線開頭的多個字元,其後有一個@之後有多個字母數字或者下劃線,其中有一個.號

grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt

 匹配結果:

[email protected]

[email protected]

[email protected]

轉自 嘉為教育-rhce認證_rhce培訓_linux培訓_linux認證_linux考證

❷ linux 正則匹配 刪除文件中不包含某字元串的行

sed - '/bbb/!d' filename
這樣就可以了吧.

❸ linux 中 ^[^abc] 正則表達式什麼意思

^代錶行首,$代錶行尾
1、^[a-z]匹配以小寫字母開頭的字元串
2、[^a-z] 不包含小寫字母的字元匹配
3、^[^a-z] 開頭不包含小寫字母的字元匹配

閱讀全文

與linux正則匹配相關的資料

熱點內容
找不到指定的文件是什麼意思 瀏覽:659
cad打不出stl文件 瀏覽:439
紅米4進入最近應用程序 瀏覽:943
word2013官方下載免費版win7 瀏覽:80
在線考試系統資料庫設計表 瀏覽:190
win10訪問不了ftp共享文件夾許可權 瀏覽:1
列印機錯誤709刪除哪個文件 瀏覽:281
java如何編程模擬一個骰子 瀏覽:572
微信賬號文件android 瀏覽:254
linux下庫文件 瀏覽:721
javascript自動全屏 瀏覽:263
視頻文件顯示十幾個小時 瀏覽:276
mediacoder最新版本 瀏覽:80
電腦桌面文件分布軟體 瀏覽:116
迪拜iphone6什麼版本 瀏覽:884
編程的表現有哪些 瀏覽:871
手機上面顯示的文件是什麼 瀏覽:659
哪些網路路由器有API 瀏覽:134
爐石安卓dpi修改器 瀏覽:144
復雜網路邊的權重 瀏覽:891

友情鏈接