正则表达式概述
文章目錄
- 一、正則表達式概述
- 1.1正則表達式定義
- 1.2正則表達式層次
- 1.3Linux中文本處理工具
- 1.4基礎正則表達式元字符
- 二、演示
- 2.1 grep[選項]...查找條件目標文件
- 2.1.1不區分大小寫查找the所有的行
- 2.2 cut :列表截取工具
- 2.3 sort 排序工具
- 2.4 uniq :去重復工具
- 2.5 tr 修改工具
一、正則表達式概述
-
正則表達式,又稱規則表達式。(英語:Regular Expression),在代碼中常簡寫為regex、regexp
或RE,計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合以某個模式(規則)的文本。 -
正則表達式不只有一種,而且 linux中不同的程序可能會使用不同的正則表達式,如:工具:grep sed awk egrep
-
正則表達式—通常用于判斷語句中,用來檢查某一字符串是否滿足某一格式正則表達式是由普通寧字符與元寧符組成
-
普通字符包括大小寫字母、數字、標點符號及一些其他符號
元字符是指在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式 -
LINUX 中常用的有兩種正則表達式引擎
基礎正則表達式:BRE
擴展正則表達式:ERE
1.1正則表達式定義
-
正則表達式,又稱正規表達式、常規表達 式
-
使用字符串來描述、匹配一系列符合某個規則的字符串
-
正則表達式組成
普通字符
大小寫字母、數字、標點符號及一些其他符號元字符
在正則表達式中具有特殊意義的專用字符
1.2正則表達式層次
-
基礎正則表達式
-
擴展正則表達式
1.3Linux中文本處理工具
- grep
- egrep
- sed
- awk
1.4基礎正則表達式元字符
- 基礎正則表達式是常用的正則表達式部分
- 除了普通字符外,常見到以下元字符
\ :轉義字符,\ ! 、\n等
^ :匹配字符串開始的位置例: ^ a、^ the、^#
$ :匹配字符串結束的位置例: word$
. :匹配除\n之外的任意的一個字符例: go.d 、g…d
- 常見元字符(續)
* :匹配前面子表達式o次或者多次
例: goo*d、’ go.*d
[list]:匹配list列表中的一個字符
例: go[ola]d,[abc]、[a-z]、[a-zO-9]
[^list]:匹配任意不在list列表中的一個字符
例:[^a-z]、[^O-9]、[^A-Z0-9]
\{n,m\}:匹配前面的子表達式n到m次,有\{n\}、\{n,\}、\{n,m\}三種格式
例: go\{2\}d、go\{2,3\}d、go\{2,\}d
- 擴展正則表達式元字符
- 擴展正則表達式是對基礎正則表達式的擴充深化擴展元字符
+:匹配前面子表達式1次以上
例: go+d,將匹配至少一個o
?:匹配前面子表達式0次或者1次
例: go?d,將匹配gd或god
():將括號中的字符串作為一個整體
例:(xyz)+,將匹配xyz整體1次以上,如xyzxyz
|:以或的方式匹配字條串
例1: good|food,將匹配good或者food
例2: g(oo|la)d,將匹配good或者glad
二、演示
2.1 grep[選項]…查找條件目標文件
-E:開啟擴展(Extend的正則表達式
-c : 計算找到”搜尋字符串“的次數
-i :忽略大小寫的不同,所以大小寫視為相同
-o :只顯示被模式匹配到的字符串
-v﹔反向選擇,亦即顯示出沒有‘搜尋字符串′內容的那一行!(反向查找,輸出與查找條件不相符的行)
–color=auto :可以將找到的關鍵詞部分加上顏色的顯示喔!
-n :順便輸出行號
-c 只打印匹配的文本行的次數,不顯示文本內容。
-h 當搜索多個文件,不顯示匹配文件名前綴。
-l 只列出含義匹配的文本行的文件的文件名,不顯示其具體匹配的內容
-s 不顯示關于不存在或無法讀取文件的錯誤信息
-w 匹配整個單詞
-x 匹配整個文本行
-r 遞歸搜索,不僅搜索當前目錄,還有各級子目錄
–color=auto 可以將找到的關鍵詞部分加上顏色的顯示
2.1.1不區分大小寫查找the所有的行
2.2 cut :列表截取工具
使用說明:cut 命令從文件的每一行剪切字節、字符和字段并將這些字節、字符和字段寫至標準輸出。如果不指定 File 參數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標志之一
常用選項
| b | 按字節截取 |
| c | 按字符截取,常用于中文 |
| d | 指定以什么為分隔符截取,默認為制表符 |
| f | 通常和-d一起 |
2.3 sort 排序工具
sort 是一個以行為單位對文件內容進行排序的工具,也可以根據不同的數據類型來排序。例如數據和字符的排序就不一樣
格式
sort [選項] 參數
常用選項與說明
| t | 指定分隔符,默認使用[Tab]吧 鍵或空格分隔 |
| k | 指定排序區域,哪個區間排序 |
| n | 按照數字進行排序,默認是以文字形式排序 |
| u | 等同于 uniq,表示相同的數據僅顯示一行,注意:如果行尾有空格去重就不成功 |
| r | 反向排序,默認是升序,-r就是降序 |
| o | 將排序后的結果轉存至指定文件 |
| f | 忽略大小寫,會將小寫的字母都轉換為大寫字母來進行比較 |
| b | 忽略每行前面的空格 |
sort /etc/passwd 不加任何選項默認按第一列升序,字母的話就是從a到z由上而下顯示
2.4 uniq :去重復工具
主要用于去除連續的重復行
注意:是連續的行,所以通常和sort結合使用先排序使之變成連續的行再執行去重操作,否則不連續的重復行他不能去重
格式
uniq 【選項】 參數
常用選項說明
| c | 對重復的行進行計數 |
| d | 僅顯示重復行 |
| u | 僅顯示出現一次的行 |
示例
[root@localhost ~]# cat shuiguo.txt | uniq -c ##統計重復行的次數,不連續的重復行他不算做重復行
比較實用的幾個案例
[root@localhost ~]# who ##查看登陸用戶
root pts/0 2022-05-06 14:32 (192.168.161.20)
[root@localhost ~]# who | awk ‘{print $ 1}’
root
[root@localhost ~]# who | awk ‘{print $ 1}’ |uniq
root
[root@localhost ~]# who | awk ‘{print $ 1}’ |sort |uniq|grep -v “^$” |grep -v wtmp ##查看登陸過系統的用戶
root
[root@localhost ~]# ss -nt |tr -s " "|cut -d " " -f5 |cut -d “:” -f1 |sort |uniq -c ##查看登陸ip和使用者個數
1 192.168.161.20
1 Address
[root@localhost ~]# ss -nta |grep -v ‘State’|cut -d " " -f1 |sort |uniq -c ##查看客戶端和監聽服務端個數
1 ESTAB
3 LISTEN
2.5 tr 修改工具
它可以用一個字符來替換另一個字符,或者可以完全除去一些字符,也可以用它來除去重復字符
用法:
tr [選項]… SET1 [SET2]
從標準輸入中替換、縮減和/或刪除字符,并將結果寫到標準輸出。
常用選項
-d 刪除字符
-s 刪除所有重復出現的字符,只保留第一個
示例:
[root@localhost ~]# cat shuiguo.txt | tr ‘a-z’ ‘A-Z’ ##小寫字母全部替換成大寫
總結
相關的文件操作,只是起到一個方便閱讀的作用,并不會改變文件相關配置,可以放心使用
總結
- 上一篇: Oracle v$SQLAREA
- 下一篇: java导出excel弹出下载框_[Ja