linux學習筆記(十二)
正則表達式基礎
1.正則表達式 regular expression
一個正則表達式通常被稱為一個模式(pattern),為來描述或者匹配一系列符合某個句法規則的字符串。
2.基本語法
選擇:
| “boy|girl”可以匹配boy或girl
數量限定:
- 表示前面的字符必須出現至少一次(1次或多次),如“goo+gle”可以匹配“gooole”,“goooole”
? 表示前面的字符最多出現一次(0次或1次),如“colou?r”可以匹配“color”、“colour” - 表示前面的字符可以不出現、或者出現一次或者出現多次(0次、或1次、或多次),如“0*42”可以匹配42、042、0042、00042等
範圍和優先級:
( ) 用來定義定義模式字符串的範圍和優先級。
如gr(a|e)y 等級與gray|grey
(grand)?father 匹配father和grandfather
部分語法:
將系一個字符標記為一個特殊字符或一個原義字符。如“n”匹配“n”,“\n”匹配換行符,“\”匹配,(匹配(
^ 匹配輸入字符串的開始位置
$ 匹配輸入字符串的結束位置
{n} n是一個非負整數,匹配確定的n次
{n,} n是一個非負整數,至少匹配n次。{1,}等價於+,{0,}等價於*
{n,m} n,m均為非負整數,n<m,最少匹配n次,最多匹配m次
- 匹配前面的子表達式零次或多次
- 匹配前面的子表達式一次或多次
? 匹配前面的子表達式零次或一次
? 當?緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})後面,匹配模式是非貪婪的,非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式盡可能多的匹配所搜索的字符串。如“00000”,“0+?”匹配“0”,“0+”匹配所有0
(patter)匹配pattern並獲取之一匹配的子字符串
x|y 匹配x或y
[xyz] 字符集合,匹配所包含的任意一個字符。其中特殊字符僅有反斜線\保持特殊含義,用於轉義字符。其它特殊字符如星號、加號、各種括號等均作為普通字符。脫字符^如果出現在首位則表示負值字符集合;如果出現在字符串中間就僅作為普通字符。連字符 - 如果出現在字符串中間表示字符範圍描述;如果如果出現在首位則僅作為普通字符
[^xyz] 排除型字符集合。匹配未列出的任意字符。
[a-z] 字符範圍,匹配制定範圍內的任意字符
[^a-z] 排除型字符範圍。匹配任何不在制定範圍內的任意字符
3.優先級
轉義符、括號中括號、限定符、定位點和序列(^,$,\任何元字符)、選擇
4.grep模式匹配命令
grep命令用於打印輸出文本中匹配的模式串,使用正則表達式作為匹配條件。
grep 參數 模式 file
-b 將二進制文件作為文本來進行匹配
-c 統計與模式匹配的數目
-i 忽略大小寫
-n 顯示匹配文本所在行的行號
-v 反選,輸出不匹配行的內容
-r 遞歸匹配查找
-A n after,除列出匹配行外,還列出後面的n行
-B n before,除列出匹配行外,還列出前面的n行
--color=auto 將輸出的匹配項設置為自動顏色顯示
grep支持三種正則表達式引擎
-E ERE,擴展正則表達式
-G BRE,基本正則表達式
-P PCRE ,perl正則表達式
5.使用正則表達式:
基本正則表達式BRE
...位置:查找/etc/group文件中以“shiyanlou”開頭的行
grep ‘shiyanlou’/etc/group
grep ‘^shiyanlou‘ /etc/group
...數量:
...選擇:
完整的特殊符號及說明:
6.使用擴展正則表達式ERE
grep -E 或者用egrep
...數量:
...選擇:
其中.有特殊含義,需要轉義
7.sed流編輯器
sed工具用於過濾和轉換文本的流編輯器
sed 參數 執行命令 file
-n 安靜模式,只打印受影響的行,默認打印輸入數據的全部內容。
-e 用於腳本中添加多個執行命令一次執行,在命令行中執行多個命令通常不需要加蓋參數
-f filename 執行指定filename文件中的命令
-r 使用擴展正則表達式,默認為標準正則表達式
-i 將直接修改輸入文件內容,而不是打印到標準輸出設備
sed編輯器的執行命令--略
8.awk文本處理工具--略
linux學習筆記(十二)