国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

shell之正則表達(dá)式及三劍客grep命令

這篇具有很好參考價值的文章主要介紹了shell之正則表達(dá)式及三劍客grep命令。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、正則表達(dá)式概述

什么是正則表達(dá)式?

正則表達(dá)式是一種描述字符串匹配規(guī)則的重要工具

1、正則表達(dá)式定義:

正則表達(dá)式,又稱正規(guī)表達(dá)式、常規(guī)表達(dá)式

使用字符串描述、匹配一系列符合某個規(guī)則的字符串

正則表達(dá)式

普通字符:

大小寫字母、數(shù)字、標(biāo)點符號及一些其它符號


元字符:

在正則表達(dá)式中具有特殊意義的專用字符


正則表達(dá)式的層次分類

基礎(chǔ)正則表達(dá)式
擴展正則表達(dá)式


Linux三劍客(grep、sed、awk)支持的正則表達(dá)式

shell是不支持正則表達(dá)式的(shell支持的是通配符)。shell中的正則表達(dá)式只有個別命令支持的,一般常用的是Linux三劍客

支持正則的shell命令 正則類型
grep 默認(rèn)使用基本正則表達(dá)式(BRE)(要使用擴展正則需要加轉(zhuǎn)義字符)
egrep 或grep -E 使用擴展的正則表達(dá)式(ERE)
sed 默認(rèn)使用基本正則表達(dá)式(BRE)
awk 使用擴展正則表達(dá)式(ERE)

2 基礎(chǔ)正則表達(dá)式的元字符

基礎(chǔ)正則表達(dá)式是常用的正則表達(dá)式部分

2.1 匹配字符

\ : 表示轉(zhuǎn)義字符,去掉特殊符號的特殊含義

\n : 匹配換行符

\t : 匹配制表符

\w : 匹配單詞字符(單詞字符:a-z,A-Z,0-9,_ )

\W : 匹配非單詞字符

\S : 匹配非空白字符

\s : 匹配空白字符

\d : 匹配數(shù)字

\D : 匹配非數(shù)字

. : 表示匹配任意單個字符(默認(rèn)情況下,. 無法匹配換行符)

2.2 中括號表達(dá)式
字符組: 普通中括號包圍的字符組,表示某個單個字符匹配中括號內(nèi)的任意字符即匹配成功

x[abc]z :

可以匹配包含“xaz”、“xbz”、“xcz”的字符串


取反表示法:

中括號內(nèi)開頭使用 ^ ,表示只要不是中括號內(nèi)的字符就匹配


x[ ^abc]z :

可以匹配包含 “xdz”、“xez” 等字符串,但不能匹配包含“xaz”、“xbz”、“xcz”的字符串


范圍表示法

[a-z]:

表示任意單個小寫字母

[ ^a-z] :

匹配非小寫字母的其它任意字符串


[A-Z] :

表示任意單個大寫字符

[0-9] :

表示任意單個數(shù)字

注意:[0-59],表示匹配0、1、2、3、4、5、9,而不是0-59中間的數(shù)值


[a-z0-9A-Z] : 表示任意字母或數(shù)字

[a-z0-9A-Z_] : 表示任意字符、數(shù)字或下劃線,也就是匹配單個字符

特殊的元字符在中括號中匹配

想要在中括號中匹配: ^ ,需要將其放在 中括號非開頭的位置 ,如:[a^]
想要在中括號中匹配: - ,需要將其放在 開頭位置或結(jié)尾位置 ,如:[abc-]、[-abc]
想要在中括號中匹配: ] ,需要將其放在 開頭位置 ,如:[]abc]


2.3 位置匹配(錨定)

只匹配位置,不匹配字符,所以不會消耗字符數(shù)量,也稱為零寬斷言

^ : 匹配行首
$ : 匹配行尾


2.4 量詞(重復(fù)匹配次數(shù))


\{m\} : 表示匹配前一個字符或前一個子表達(dá)式m次

\{m,n\} : (m<n)表示匹配前一個字符或前一個字表達(dá)式最少m次,最多n次

\{m,\} : 表示匹配前一個字符或前一個子表達(dá)式至少m次

\{,n\} : 表示匹配前一個字符或前一個字表達(dá)式最多n次(匹配0次也算是成功)

*: 表示前一個字符或前一個子表達(dá)式匹配0次或多次,等價于:{0,}

.* : 匹配任意長度的任意字符
**注意:這些量詞均為貪婪匹配模式,就是盡可能的去匹配符合條件的字符,例如:ab. *c 去匹配字符串:abbcdecfc,其中. * 部分匹配的將是bcdecf **

2 擴展正則表達(dá)式的元字符


2.1 擴展常用的量詞


? : 表示匹配前一個字符或前一個子表達(dá)式0或1次,等價于:{0,1}或者{,1}

+: 表示匹配前一個字符或前一個子表達(dá)式1次或多次,就是最少一次,等價于:{1,}

2.2 二選一表達(dá)式


豎線 | 分隔左右兩個正則子表達(dá)式,表示匹配任何一個即可,即a|b表示:a或者b,在結(jié)果上等價[ab];但是:[0-5] |\sa 表示0、1、2、3、4、5 或者 “ a”,這種轉(zhuǎn)化不了為[]的形式。

使用二選一子表達(dá)式需要注意:

二選一元字符優(yōu)先級很低,所以abc|def 表示的是abc或者def,等價于:(abc)|(def),而不是ab(c|d)ef。


2.3 分組捕獲和反向引用


使用小括號()包圍一部分正則表達(dá)式,這部分正則表達(dá)式即成為一個分組整體,也稱為一個子表達(dá)式。

根據(jù)左括號的位置決定第幾個分組

例如:(abc)def 、([a-d]){3}、 ([0-9]abc(def){2}(hgi))。
分組后可以使用\N 來反向引用對應(yīng)的分組匹配結(jié)果,N是1-9的正整數(shù),\1表示第一個分組表達(dá)式的匹配結(jié)果,\2表達(dá)第二個分組表達(dá)式的匹配結(jié)果。

注意:反向引用引用的是分組匹配后的結(jié)果,不是分組表達(dá)式

例如:正則表達(dá)式:(abc|def) and \1xyz 可以匹配字符串“abc and abcxyz ” 或“def and defxyz”,但是不能匹配“abc and defxyz” 或 “def and abcxyz”
?

二、grep命令的使用

1、grep命令簡介

grep是一種強大的文本搜索工具,它能使用正則表達(dá)式,并把匹配的行打印出來。

格式

grep  [options]  pattern   [file]

options表示:選項; pattern 表示:匹配的的表達(dá)式 ; file 表示:文件名

例如:grep  -i  "root" /etc/passwd

2、常用選項

常用選項 功能
-n 列出所匹配的文本行,并顯示行號
-i 匹配時忽略字符大小寫
-v 反向匹配,匹配的字符串與搜索的不相符
-w 精確匹配。匹配整個單詞
-o 只顯示匹配的部分
-c 顯示匹配內(nèi)容的行數(shù)

3、grep 的選項使用案例

案例:過濾出/etc/passwd中的root,并添加行號(-n)

?shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例:過濾出/etc/passwd 中的FTP,不區(qū)分大小寫(-i)

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例:過濾/etc/passwd 中的不包含root的行,并且顯示行號(-v)

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式?

案例:精準(zhǔn)搜索單詞,只匹配到單詞所在的行(-w)?

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

?案例:將匹配到的單詞羅列出來(-o)

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

?案例:顯示匹配的內(nèi)容的行數(shù)(-c)

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

三、grep加上正則使用案例

1、中括號表達(dá)式案例

案例1:搜索既可以查找shirt也可以查找short的單詞所在行

?shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

?案例2:搜索oo前面不是大小寫字母開頭的行

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例3:查找包含數(shù)字的行?

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

2、位置錨定案例

案例1:搜索以.結(jié)尾的行

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例2:搜索以y開頭的行?

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

3、量詞案例

案例1:搜索2個oo的行?shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

?文章來源地址http://www.zghlxwxcb.cn/news/detail-650926.html

為了匹配了6個o,但是要求搜索的是2個o?

答:因為正則表達(dá)式是一行一行的檢索的,表達(dá)式是2個o,搜索的內(nèi)容時一個很長的字符串。
先拿表達(dá)式中的第一個字符與字符串匹配,匹配不到,進(jìn)行下一個匹配,最后匹配到了mgoooooood中的o
匹配成功,然后匹配第二個o,也匹配成功,然后就會將匹配的兩個字符消耗掉,再繼續(xù)重新匹配到下一個字符
最后消耗掉三次,也就是6個o,第7個o雖然匹配成功,但是第8個字符不是o,所以不會匹配成功。

?案例2:查看o這個字符,最少出現(xiàn)3次,最大出現(xiàn)6次

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例3:查找o這個字符,最少出現(xiàn)5次的行?

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例:特殊的量詞案例?

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

4、二選一表達(dá)式和分組案例

案例1:搜索以y開頭或者以d結(jié)尾的行

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

案例2:搜索shirt和short所在的行?

shell之正則表達(dá)式及三劍客grep命令,正則表達(dá)式

?四、總結(jié)

正則元字符 描述 grep egrep sed awk
\ 轉(zhuǎn)義符,將特殊字符進(jìn)行轉(zhuǎn)義,忽略其特殊意義 支持 支持 支持 支持
^ 匹配行首 支持 支持 支持 支持
$ 匹配行尾 支持 支持 支持 支持
. 匹配除換行符\n 之外的任意單個字符 支持 支持 支持 支持
[] 匹配包含在[字符]之中的任意一個字符 支持 支持 支持 支持
[^] 匹配[ ^z字符]之外的任意一個字符 支持 支持 支持 支持
[-] 匹配 []中指定范圍的任意一個字符,要寫成遞增 支持 支持 支持 支持
* 匹配前導(dǎo)字符或子表達(dá)式0次或多次 支持 支持 支持 支持
? 匹配前導(dǎo)字符或子表達(dá)式0次或1次 不支持(加\) 支持 不支持(加\) 支持
+ 匹配前導(dǎo)字符或子表達(dá)式1次或多次 不支持(加\) 支持 不支持(加\) 支持
() 匹配表達(dá)式,創(chuàng)建一個用于匹配的字串 不支持(加\) 支持 不支持(加\) 支持
{n} 匹配前導(dǎo)字符或子表達(dá)式n次,可以為0 不支持(加\) 支持 不支持(加\) 支持
{n,} 匹配前導(dǎo)字符或子表達(dá)式至少n次 不支持(加\) 支持 不支持(加\) 支持
{n,m} 匹配前導(dǎo)字符或子表達(dá)式,最少匹配n次,最低匹配m次,n<=m 不支持(加\) 支持 不支持(加\) 支持
| 交替匹配| 兩邊的任意一項 不支持(加\) 支持 不支持(加\) 支持

?

?

到了這里,關(guān)于shell之正則表達(dá)式及三劍客grep命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Linux系統(tǒng)三劍客之grep和正則表達(dá)式的介紹(一)

    Linux系統(tǒng)三劍客之grep和正則表達(dá)式的介紹(一)

    1.正則表達(dá)式 目錄 1.正則表達(dá)式 1.什么是正則表達(dá)式 ? 2.正則表達(dá)式的使用場景 3.正則表達(dá)式字符表示 4.它們之間的區(qū)別 2.grep命令 作用: 語法: 說明: 選項:options 重點 實例 3.后面的下次再更新。? 1.什么是正則表達(dá)式 ? 一個正則表達(dá)式就是描述了一個字符串集合的方式

    2024年01月18日
    瀏覽(105)
  • Shell腳本攻略:文本三劍客之grep

    Shell腳本攻略:文本三劍客之grep

    目錄 一、理論 1.grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.paste 二、實驗 1. grep ?編輯 ?編輯 2.sort 3.uniq ?編輯 4.tr 5.cut 6.split 7.統(tǒng)計當(dāng)前主機的連接狀態(tài) 8.統(tǒng)計當(dāng)前連接主機數(shù) 9.獲取信息 (1)概念 grep是Linux中最常用的”文本處理工具”之一,grep與sed、awk合稱為Linux中的三劍客。 grep的

    2024年02月07日
    瀏覽(85)
  • Shell腳本攻略:文本三劍客之a(chǎn)wk

    Shell腳本攻略:文本三劍客之a(chǎn)wk

    目錄 一、理論 1.awk原理 2.awk打印 ?3.awk條件判斷 4.awk數(shù)組與循環(huán) 5.awk函數(shù) 6.常用命令 二、實驗 1.統(tǒng)計磁盤可用容量 2.統(tǒng)計/etc下文件總大小 3.CPU使用率 4.統(tǒng)計內(nèi)存 5.監(jiān)控硬盤 (1)概念 awk由 Aho,Weinberger 和 Kernighan 創(chuàng)建的文本模式掃描和處理語言。 awk非常復(fù)雜,所以這不是一

    2024年02月08日
    瀏覽(83)
  • Shell編程基礎(chǔ)(十五)文本三劍客(sed)

    sed提供了一種免交互的方式修改文件內(nèi)容。 它是一行一行處理,可以通過正則匹配要修改的部分 基本語法 sed [-opt] command files(多個文件 空格隔開) sed 使用擴展正則,不加r不能完全匹配擴展正則表達(dá)式 sed -r “正則匹配數(shù)據(jù)行/指定行號 sed命令” files sed 修改內(nèi)容寫回文件 默認(rèn)

    2024年02月13日
    瀏覽(20)
  • shell腳本正則表達(dá)式

    shell腳本正則表達(dá)式

    聲明: 以下內(nèi)容為個人筆記,內(nèi)容不完全正確,請謹(jǐn)慎參考。 含義: 正則表達(dá)式使用的每個單獨字符串來描述、匹配一些列符合語法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些符合某個模式的文本。在Linux中,grep,sed,awk等文本處理工具都支

    2024年04月22日
    瀏覽(26)
  • shell 正則表達(dá)式詳解

    shell 正則表達(dá)式詳解

    目錄 正則表達(dá)式 一,什么是正則表達(dá)式 二,為什么使用正則表達(dá)式 三,如何使用正則表達(dá)式 示例: 四,基本正則表達(dá)式 基本正則表達(dá)式示例: 正則表達(dá)式字符集示例: 五,擴展正則表達(dá)式 擴展正則表達(dá)式示例: 擴展: ? ? ? ?正則表達(dá)式是通過一些特殊字符的排列,

    2024年01月17日
    瀏覽(19)
  • Liunx shell編程及自動化運維實現(xiàn)--第五章三劍客

    Liunx shell編程及自動化運維實現(xiàn)--第五章三劍客

    正則表達(dá)式(RE)是一種字符模式,用于再查找過程中匹配指定的字符,在大多數(shù)程序中,正則表達(dá)式都被置于兩個正斜杠之間:例如//就是由正斜杠界定的正則表達(dá)式,他將匹配被查找的行中任何位置出現(xiàn)的相同模式。在正則表達(dá)式中,元字符時最重要的概念。 定義:元字

    2024年02月21日
    瀏覽(22)
  • Linux Shell :正則表達(dá)式

    Linux Shell :正則表達(dá)式

    先來看一句 Shell 代碼: dpkg --list : dpkg 是 Debian 系列 Linux 發(fā)行版(如 Ubuntu)的包管理工具。 --list 選項用于列出所有已安裝的軟件包。 | :這是一個管道符號,用于將前一個命令的輸出作為后一個命令的輸入。在這里, dpkg --list 的輸出被直接傳遞給 grep 命令。 grep -E -o \\\'cu

    2024年02月08日
    瀏覽(49)
  • 【shell編程入門】正則表達(dá)式

    特殊字符 描述 [] 方括號表達(dá)式,表示匹配的字符集合,例如? [0-9] 、 [abcde] () 標(biāo)記子表達(dá)式起止位置 * 匹配前面的子表達(dá)式零或多次 + 匹配前面的子表達(dá)式一或多次 ? 匹配前面的子表達(dá)式零或一次 轉(zhuǎn)義字符,除了常用轉(zhuǎn)義外,還有: b ?匹配單詞邊界; B ?匹配非單詞邊

    2024年01月23日
    瀏覽(21)
  • Shell編程之正則表達(dá)式

    Linux中的正則表達(dá)式(regular expression)和通配符(wildcard)都是用于匹配字符串的工具,但它們之間存在一些區(qū)別和應(yīng)用場景的不同。 正則表達(dá)式是描述一種字符串匹配的模式,通過特殊的字符和語法,可以檢查一個字符串是否匹配某種模式,匹配成功后可以進(jìn)行子串替換、取出符

    2024年02月01日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包