真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux命令行正則 linux正則表達式匹配字符串

Linux正則表達式

一.linux文本查找命令

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、盤錦網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)、電子商務商城網(wǎng)站建設、集團公司官網(wǎng)建設、外貿(mào)營銷網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為盤錦等各大城市提供網(wǎng)站開發(fā)制作服務。

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

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

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

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

如下簡單的介紹grep命令:

語法格式:

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

用途:

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

options:

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

-F : 使用固定字符串進行匹配, grep -F 或取代傳統(tǒng)的fgrep命令。

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

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

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

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

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

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

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

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

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

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

二.正則表達式簡要介紹

1.正則表達式的組成

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

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

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

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

\?? :??通常用于打開或關閉后續(xù)字符的特殊含義,如\(...\)與\{...\}

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

*? :?? 匹配其前的任何數(shù)目或沒有的單個字符,例:?.?表示任一字符, 則 .* 匹配任一字符的任意長度

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

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

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

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

\{n,m\} : 區(qū)間表達式,匹配在它前面的單個字符重現(xiàn)的次數(shù)區(qū)別。\{n\}指重現(xiàn)n次;\{n,m\}指重現(xiàn)n至m次;

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

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

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

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

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

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

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

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

(4).?方括號([])表達式

4.1.字符集? [:? :]

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

[::alnum] : 數(shù)字字符[:digit:] : 數(shù)字字符[:punct:] : 標點符號字符

[:alpha:] : 字母字符[:graph:] : 非空格字符[:space:] :?空格字符

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

[:cntrl:] : 控制字符[:print:] : 可顯示的字符[:xdigit:] : 16進制數(shù)字

4.2.排序符號

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

4.3.等價字符

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

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

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

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

3.簡單正規(guī)表達式匹配案例

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

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

china$ : 匹配以china結(jié)尾的行

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

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

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

Ch.*na : 匹配一行中含Ch字符,并且其后跟0個或者多個字符,再繼續(xù)跟na兩字符

二.實例

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

baidu.com

baidu

1.url匹配

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

BRE匹配:

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

ERE匹配:

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

匹配結(jié)果如下:

2.Email匹配

示例文件內(nèi)容為:

hfutwyy@qq.com

aaaa@

aaa@.com

aaa@gmail.com

@@baidu.com

匹配以字母數(shù)字或者下劃線開頭的多個字符,其后有一個@之后有多個字母數(shù)字或者下劃線,其中有一個.號

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

匹配結(jié)果:

hfutwyy@qq.com

aaa@.com

aaa@gmail.com

轉(zhuǎn)自 嘉為教育-rhce認證_rhce培訓_linux培訓_linux認證_linux考證

Linux||正則表達式及grep命令

以下內(nèi)容首發(fā)自公眾號“小汪Waud”。

本期介紹在Linux環(huán)境下的正則表達式及grep命令。

正則表達式(Regular Expression)是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符及這些字符的特定組合,組成一個“規(guī)則字符串”,這個字符串用來表達對字符串的一種過濾邏輯。

正則表達式基本上是一種表示法,只要程序支持這種表示法,該程序就可以用來作為正則表達式的字符串處理之用。如vi、grep、awk、sed等程序支持正則表達式,所以可以使用正則表達式的特殊字符來進行字符串的處理。但例如cp、ls等命令并不支持正則表達式,所以只能用自己的通配符。

正則表達式依照 不同的嚴謹度 分為:基礎正則表達式和擴展正則表達式。

注意!

grep是一種強大的文本搜索工具,可以使用 正則表達式匹配模式 查找文件里符合條件的字符串,并打印出來。

有點類似于WORD里的查找功能。

grep支持三種正則表達式語法:Basic、Extended和perl兼容。 如果沒有提供正則表達式類型,grep將搜索模式解釋為基本的正則表達式。要將模式解釋為擴展正則表達式,請使用-E。

查看grep的幫助文檔,如下

基本用法

grep [OPTION]... PATTERN [FILE]...

高級用法

grep [-A] [-B] [--color=auto] "查找字符" [模式] [文件]

常用參數(shù)

首先通過cat命令查看samples.txt的內(nèi)容,如下圖

如果想檢索以K為行首的行,通過以下命令即可得到

如果想檢索以Z為行尾的行,通過以下命令即可得到

如果想檢索三個字符其中前面為K,后面為D中間字符,為任意字符,通過以下命令即可得到

參考資料

Linux正則表達式與通配符

正則表達式:在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索或替換那些符合某個模式的文本內(nèi)容。正則表達式這個概念最初是由Unix中的工具軟件(例如sed和grep)普及開的。

只有掌握了正則表達式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

grep、sed、awk天然支持正則

grep -v代表反選,反向選擇匹配到的內(nèi)容

grep -E代表使用擴展正則

grep -P代表使用Perl正則

sed -r 代表使用擴展正則

正則表達式分為三類(man grep可以看到,分別是basic RegExs,extended RegExs,perl RegExs)

1、基本的正則表達式(Basic Regular Expression 又叫 Basic RegEx 簡稱 BREs)

2、擴展的正則表達式(Extended Regular Expression 又叫 Extended RegEx 簡稱 EREs)

3、Perl 的正則表達式(Perl Regular Expression 又叫 Perl RegEx 簡稱 PREs)

b. 處理過程:查找文本文件中是否包含要查找的 “關鍵字”(關鍵字可以是正則表達式) ,默認返回匹配的該行的內(nèi)容

c. grep|egrep處理文件時,按行處理 |

| sed | sed | sed -r | - | a. 處理對象:文本文件

b.處理操作:對文本文件的內(nèi)容進行 查找、替換、刪除、增加等操作

c. sed 在處理文本文件的時候,按行處理 |

| awk | - | awk | - | a. awk 處理的對象:文本文件

b. awk 處理操作:主要是對列進行操作 |

注意:egrep 或 sed -r 默認使用擴展正則表達式(EREs),一般特殊字符({})可以不轉(zhuǎn)義

grep -E 以及egrep(Extend Regular Expression)

Linux通配符和三劍客的正則表達式是不一樣的,因此,代表的意義也有較大的區(qū)別 。

通配符一般用戶命令行bash環(huán)境,而linux正則表達式用于grep, sed, awk場景。

通配符說明

示例:* 的使用:代表任意0-N個字符,代表所有字符


分享題目:linux命令行正則 linux正則表達式匹配字符串
標題路徑:http://weahome.cn/article/dooiiip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部