正則匹配與替換 regexp & regsub
正則匹配是使用正則運算式匹配字串的一種方法;在腳本撰寫程序中,經常需要處理一些文本,而這些文本中可能只有部分資訊是有用的,我們需要從文本中提取出這些有用資訊;這時候,就需要撰寫特定格式的正則運算式,將文本中符合正則運算式的字串抓取出來,然后對其進行分解、組合、替換等處理,得到符合需求的處理結果。
正則運算式十分靈活,這也使其具有強大的匹配能力,熟練的撰寫正則運算式,幾乎可以匹配任何形式的字串。因此,在腳本設計中,熟練地使用正則運算式,是一種十分重要的技能,可以有效的提高腳本的運行效率。
使用正則運算式需要借助兩個重要工具:regexp 和 regsub,分別用于匹配和替換。
(注:regexp & regsub 的操作物件是字符文本,如果需要直接對檔案進行處理,可以使用 sed & awk )
sed & awk 的用法參考這篇博文: https://www.cnblogs.com/xiaoxie2014/p/9883168.html
regexp
regexp 是用于判斷正則運算式是否全部或者部分匹配目標字串的命令,匹配回傳 1,否則回傳 0。
regexp 有兩種用法,一種是僅匹配,另一種是匹配子串
第一種用法舉例 regexp {^([0-9]+[a-z]+|[A-Z]+[0-9]+)$} 123abc,這個正則運算式用于匹配“數字開頭且小寫字母結尾” 或者 “大寫字母開頭且數字結尾” 的運算式,所以回傳值為 1
詳細解釋: ^ 匹配開頭,$ 匹配結尾,中間的 | 表示 “或”, + 表示前面的字符出現一次或者多次
第二種用法子串匹配舉例 regexp {([0-9]+)\s([a-z]+)} "there are 100 apples" str01 sub01 sub02 ,這個正則運算式用于匹配“一個或多個數字加一個空格加一個或多個小寫字母”,回傳1
詳細解釋: 運算式中包括兩個子串 ([0-9]+) 和 ([a-z]+),所以 str01="100 apples" 子串sub01=100 子串sub02=apples
regsub
regsub 是用于對目標字串中滿足正則運算式的部分進行替換,并將替換后的結果存入新的變數中,匹配成功回傳 1,否則回傳 0。
舉例 regsub {there} “they live there lives” their x , 正則運算式為 there ,匹配字串中的單詞 there,將其替換為 their,并將替換后的字串存入變數 x, 回傳 1,所以變數 x 的值就是 $x="they live their lives"
注意: regsub 有個選項 -all,如果沒有這個開這個選項,則只替換第一個匹配, 否則替換所有匹配到的目標
轉自https://www.cnblogs.com/xiaoxie2014/p/9347620.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/79004.html
標籤:非技術區
