1. 程式人生 > >linux學習筆記(十二)

linux學習筆記(十二)

所有 表達式 模式 auto 反選 bre 匹配條件 優先 匹配

正則表達式基礎

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學習筆記(十二)