Linux中的shell正则表达式详解
生活随笔
收集整理的這篇文章主要介紹了
Linux中的shell正则表达式详解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Shell中使用正則表達(dá)式處理文本的命令有如下工具:
| grep | 默認(rèn)不支持?jǐn)U展表達(dá)式,加-E選項(xiàng)開(kāi)啟ERE。如果不加-E,此時(shí)使用花括號(hào)時(shí)要加轉(zhuǎn)義符:\{\} |
| egrep | 支持基礎(chǔ)和擴(kuò)展表達(dá)式 |
| awk | 支持基礎(chǔ)和擴(kuò)展表達(dá)式 |
| sed | 默認(rèn)不支持?jǐn)U展表達(dá)式,加-r選項(xiàng)開(kāi)啟ERE。如果不加-r,此時(shí)使用花括號(hào)時(shí)要加轉(zhuǎn)義符:\{\} |
注:-E 選項(xiàng)為擴(kuò)展的正則表達(dá)式:支持+、?、|、()
. 匹配除換行符(\n)之外的任意單個(gè)字符
echo -e "123\n456" | grep "1.3" # 顯示 123^ 匹配以xxx字符(串)開(kāi)頭所在的行
echo -e "abc\nxyz" | grep "^ab" # 顯示 abc$ 匹配以xxx字符(串)結(jié)尾所在的行
echo -e "abc\nxyz" | grep "z$" # 顯示 xyz* 匹配前一個(gè)字符0個(gè)或多個(gè)
echo -e "x\nxo\nxoo\no\noo" |grep "xo*" # 顯示 x/xo/xoo+ 匹配前一個(gè)字符1個(gè)或多個(gè)
# grep -E 該選項(xiàng)為拓展的正則表達(dá)式,支持 + ? | 和 () echo -e "abc\nabbc\nac" | grep -E "ab+c" # 顯示 abc/abbc? 匹配前一個(gè)字符0個(gè)或1個(gè)
echo -e "abc/abbc/ac" | grep -E "ab?c" # 顯示 abc/ac[ ] 匹配中括號(hào)中的任意一個(gè)字符
echo -e "abd\ncdf\nghj" | grep "[ac]" # 顯示 abd/cdf[.-.] 匹配中括號(hào)中范圍內(nèi)的任意一個(gè)字符
echo -e "abc\nxyz" | grep "[a-z]" # 顯示 abc/xyz[^.] 匹配非中括號(hào)中字符(串)之外的任意一個(gè)字符(串)
echo -e "a\nb\nc" | grep "[^a]" # 顯示 b/c^[^.] 匹配以非中括號(hào)中字符(串)開(kāi)頭的行
echo -e "abc\nxyz" | grep "^[^a]" # 顯示 xyz{n,}或{n} 匹配前面的字符至少 n次
echo -e "abc\nabcc\nabccc\nabcccc" | grep -E "c{2}" # 顯示 abcc/abccc/abcccc{n,m} 匹配前面的字符至少 n次至多m次
# -w 只選擇與整個(gè)單詞相匹配的行 # 注意m與前面的逗號(hào)之間沒(méi)有空格 echo -e "abc\nabcc\nabccc\nabcccc" | grep -E -w "abc{2,3}" # 顯示 abcc/abccc\< 邊界符,匹配行的開(kāi)始
# 匹配以ab開(kāi)始的行 echo -e "abc\nabcc\ncab" | grep -E "\<ab" # 顯示 abc/abcc\> 邊界符,匹配行的結(jié)尾
# 匹配以ab結(jié)束的行 echo -e "abc\nabcc\ncab" | grep -E "bc\>" # 顯示 abc| 匹配豎杠兩邊兩個(gè)字符中的任意一個(gè)
echo -e "a\nb\nc" | grep -E "b|c" # 顯示 b/c\ 轉(zhuǎn)義符,將特殊符號(hào)轉(zhuǎn)成字面意義上的字符
echo -e "1.2" | grep -E "1\.2" # 顯示 1.2Posix字符
| [:alnum:] | 等效于[a-zA-Z0-9] |
| [:alpha:] | 等效于[a-zA-Z] |
| [:lower:] | 等效于[a-z] |
| [:upper:] | 等效于[A-Z] |
| [:digit:] | 等效于[0-9] |
| [:lower:] | 等效于[a-z] |
| [:space:] | 匹配任意空白字符,等效于[\t\n\f\v] |
| [:graph:] | 非空白字符 |
| [:blank:] | 空格與定位字符 |
| [:contrl:] | 控制字符 |
| [:print:] | 可顯示的字符 |
| [:punct:] | 標(biāo)點(diǎn)符號(hào)字符 |
| [:xdigit:] | 十六進(jìn)制 |
| 示例 | echo -e "123\n1234a" | grep "[[:digit:]]" # 匹配所有包含數(shù)字的行 |
| \w | 匹配任意數(shù)字和字母, 等效于[a-zA-Z0-9_] |
| \W | 與\w相反,等效于[^a-zA-Z0-9_] |
| \b | 匹配字符串開(kāi)始或結(jié)束,等效于\<和\> |
| \s | 匹配任意的空白字符 |
| \S | 匹配任意的非空白字符 |
| 示例 | echo -e "Hello\n123" | grep "\w" # 匹配Hello和123 |
| \n | 換行符 |
| \r | 回車符 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
| \0 | 空值符 |
| \b | 退格符 |
參考:《Shell入門(mén)到精通》作者:李振良
總結(jié)
以上是生活随笔為你收集整理的Linux中的shell正则表达式详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机视觉招聘_香港理工大学人工智能设计
- 下一篇: 串行异步通信_单片机串行口介绍