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