中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

第六章 Shell正則表達式

發布時間:2020-06-14 18:04:34 來源:網絡 閱讀:4745 作者:李振良OK 欄目:開發技術

正則表達式在每種語言中都會有,功能就是匹配符合你預期要求的字符串。

Shell正則表達式有兩種:

基礎正則表達式:BRE(basic regular express)

擴展正則表達式:ERE(extend regular express),擴展的表達式有+、?、|和()

下面是一些常用的正則表達式符號,我們先拿grep工具舉例說明。

符號

描述

示例

.匹配除換行符(\n)之外的任意單個字符

匹配123:

echo -e "123\n456" |grep -E '1.3'

^匹配前面字符串開頭

匹配以abc開頭的行:

echo -e "abc\nxyz" |grep -E ^abc

$匹配前面字符串結尾

匹配以xyz結尾的行:

echo -e "abc\nxyz" |grep -E xyz$

*匹配前一個字符零個或多個

匹配x、xo和xoo:

echo -e "x\nxo\nxoo\no\noo" |grep "xo*"

x是必須的,批量了0零個或多個

+匹配前面字符1個或多個

匹配abc和abcc:

echo -e "abc\nabcc\nadd" |grep -E 'ab+'

這樣是匹配單個數字:echo "113" |grep -E -o '[0-9]'

連續匹配多個數字:echo "113" |grep -E -o '[0-9]+'

匹配前面字符0個或1個

匹配ac或abc:

echo -e "ac\nabc\nadd" |grep -E 'a?c'

[ ]匹配中括號之中的任意一個字符

匹配a或c:

echo -e "a\nb\nc" |grep -E '[ac]'

[ .-.]匹配中括號中范圍內的任意一個字符

匹配所有字母:

echo -e "a\nb\nc" |grep -E '[a-z]'

[^]匹配[^字符]之外的任意一個字符

匹配a或b:

echo -e "a\nb\nc" |grep -E '[^c-z]'

匹配末尾數字:echo "abc:cde;123" |grep -E '[^;]+$'

{n}或{n,}匹配花括號前面字符至少n個字符

匹配abc字符串(至少三個字符以上字符串):

echo -e "a\nabc\nc" |grep -E '[a-z]{3}' 

{n,m}匹配花括號前面字符至少n個字符,最多m個字符

匹配12和123(不加邊界符會匹配單個字符):

echo -e "1\n12\n123\n1234" |grep -E -w -o '[0-9]{2,3}'

\<邊界符,匹配字符串開始

匹配開始是123和1234:

echo -e "1\n12\n123\n1234" |grep -E -w '\<123'

\>邊界符,匹配字符串結束

匹配結束是1234:

echo -e "1\n12\n123\n1234" |grep -E '4\>'

( )

單元或組合:將小括號里面作為一個組合

分組:匹配小括號中正則表達式或字符。\n反向引用,n是數字,從1開始編號,表示引用第n個分組匹配的內容

單元:匹配123a字符串

echo "123abc" |grep -E -o '([0-9a-z]){4}'

分組:匹配11

echo "113abc" |grep -E -o '(1)\1'

匹配出現xo出現零次或多次:

echo -e "x\nxo\nxoo\no\noo" |egrep "(xo)*"

|匹配豎杠兩邊的任意一個

匹配12和123:

echo -e "1\n12\n123\n1234" |grep -E '12\>|123\>'

\轉義符,將特殊符號轉成原有意義1.2,匹配1.2:1\.2,否則112也會匹配到


Posix字符

描述

[:alnum:]等效[a-zA-Z0-9]
[:alpha:]等效[a-zA-Z]
[:lower:]等效[a-z]
[:upper:]等效[A-Z]
[:digit:]等效[0-9]
[:space:]匹配任意空白字符,等效[\t\n\r\f\v]
[:graph:]非空白字符
[:blank:]空格與定位字符
[:cntrl:]控制字符
[:print:]可顯示的字符
[:punct:]標點符號字符
[:xdigit:]十六進制


示例:

echo -e "1\n12\n123\n1234a" |grep '[[:digit:]]'


博客地址:http://lizhenliang.blog.51cto.com

QQ群:Shell/Python運維開發群 323779636


在Shell下使用這些正則表達式處理文本最多的命令有下面幾個工具:


命令

描述

grep默認不支持擴展表達式,加-E選項開啟ERE。如果不加-E使用花括號要加轉義符\{\}
egrep支持基礎和擴展表達式
awk支持egrep所有的正則表達式
sed默認不支持擴展表達式,加-r選項開啟ERE。如果不加-r使用花括號要加轉義符\{\}


支持的特殊字符

描述

\w匹配任意數字和字母,等效[a-zA-Z0-9_]
\W與\w相反,等效[^a-zA-Z0-9_]
\b匹配字符串開始或結束,等效\<和\>
\s匹配任意的空白字符
\S匹配非空白字符


空白符

描述

\n換行符
\r回車符
\t水平制表符
\v垂直制表符
\0空值符
\b退后一格


下一章節具體講解grep、sed和awk用法,想要提升三劍客功底的可以看看!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富民县| 北流市| 陆丰市| 板桥市| 峨边| 建水县| 应用必备| 潢川县| 华容县| 阳新县| 闵行区| 秭归县| 阿克| 南丹县| 兰溪市| 鄂尔多斯市| 手机| 微山县| 建水县| 灵石县| 石首市| 乌兰县| 洮南市| 河东区| 黑龙江省| 民乐县| 宝坻区| 奉新县| 南郑县| 沙湾县| 甘德县| 长武县| 巫溪县| 涪陵区| 夏邑县| 故城县| 静宁县| 沅陵县| 新沂市| 马公市| 平舆县|