正規表示式在每種語言中都會有,功能就是匹配符合你預期要求的字串。
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個字元
匹配abc字串(至少三個字元以上字串):
echo -e "a\nabc\nc" |grep -e '[a-z]'
匹配花括號前面字元至少n個字元,最多m個字元
匹配12和123(不加邊界符會匹配單個字元):
echo -e "1\n12\n123\n1234" |grep -e -w -o '[0-9]'
\<
邊界符,匹配字串開始
匹配開始是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])'
分組:匹配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:]]'
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用法,想要提公升三劍客功底的可以看看!
PHP第六章筆記 正規表示式
一 正規表示式的語法規則 描述了一類字串的特徵,然後通過這個特徵可以配合一些特定的函式,來完成對字串更加複雜的一系列操作 普通字元和特殊字元組成的乙個字串二 定界符 我們一般習慣使用正斜線 作為定界的字元,前後一致三 普通字元 四 元字元 d 匹配任意乙個十進位制數字,等價於 0 9 d 匹配任意乙...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
shell 第六章 陣列應用
第六章 shell陣列應用 1.陣列基本概述 2.陣列基本使用 3.陣列遍歷與迴圈 01.什麼是陣列?陣列其實也算是變數,傳統的變數只能儲存乙個值,但陣列可以儲存多個值。02.陣列的分類 shell陣列分為普通陣列和關聯陣列。普通陣列 只能使用整數作為陣列索引。關聯陣列 可以使用字串作為陣列索引。0...