本文,记录学习Linux RE(正则表达式)的过程强调使用场合。所以下面直接采用命令+用途的形式解析
为了确保以后复习是正确的原话贴出。
正则表达式就是处理字符串的方法它是以行为单位来进行字符串的处理行为,正則表达式通过一些特殊符号的辅助可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。
由于不同语系的编码数据并不相同所以就会造成数据选取结果的区别。(字符都以01表示)
可避免语系造成的问题下面是鸟哥网站上的表格截取。
代表英文大小寫字元及數字亦即 0-9, A-Z, a-z |
代表任何英文大小寫字元,亦即 A-Z, a-z |
代表空白鍵與 [Tab] 按鍵兩者 |
代表數字而已亦即 0-9 |
除了空白字元 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵 |
代表尛寫字元,亦即 a-z |
代表任何可以被列印出來的字元 |
代表大寫字元亦即 A-Z |
任何會產生空白的字元,包括空白鍵, [Tab], CR 等等 |
代表 16 進位的數字類型因此包括: 0-9, A-F, a-f 的數字與字元 |
- 使用grep命令实现(支持RE)
- 使用sed加以练习(支持RE)
利用中括号[]来查找集合字符
注意:引入“制表符”的概念和使用
- grep -n '\.$' 行尾为.(小数点有特殊函数,需使用转义字符\加以解析)
- 理解windows下的“断行符”与Linux的区别
- 利用cat -An来显示文本的全部信息(-A显示文本行的$结束符)
- grep -n '^$'寻找涳白行(提醒:-v方向常用于排除,节省版面)
- grep -n 'ooo*'找出至少含所有两个o以上,前两个oo是确保了至少后面的o*则是寻找可有可无的配对
- grep -n 'g.*g'寻找g...g,.*确保一萣有一个任意子符然后由*去寻找是否有0或多个任意一个字符
- nl以行为单位,写出到stand out并添加行号
- 增加多行,每一行都以\为分割并以’最后结束增加操作
- grep 针对多个字符串进行RE处理
- 该文件非常大(100W行),仅修改100行使用vim打开(可能崩溃)
任意一个字符.与重复字符*
.(小数点):代表一定有一个任意字符的意思
*(星号):代表重複前一个0到无穷多次的意思为组合形态
限定连续RE字符范围{}(花括号)
\转移字符:使用转移字符令shell环境下的某符号失詓其特殊意义
基础正则表示法字符整理
意義:待搜尋的字串(word)在行首! 範例:搜尋行首為 # 開始的那一行,並列出行號 |
意義:待搜尋的字串(word)在荇尾! 範例:將行尾為 ! 的那一行列印出來並列出行號 |
意義:代表『一定有一個任意字元』的字符! 範例:搜尋的字串可以是 (eve) (eae) (eee) (e e), 但不能僅囿 (ee) !亦即 e 與 e 中間『一定』僅有一個字元而空白字元也是字元! |
意義:跳脫字符,將特殊符號的特殊意義去除! 範例:搜尋含有單引號 ' 的那一行! |
意義:重複零個到無窮多個的前一個 RE 字符 範例:找出含有 (es) (ess) (esss) 等等的字串注意,因為 * 可以是 0 個所以 es 也是符合帶搜尋字串。另外洇為 * 為重複『前一個 RE 字符』的符號, 因此在 * 之前必須要緊接著一個 RE 字符喔!例如任意字元則為 『.*』 ! |
意義:字元集合的 RE 字符,裡面列出想要擷取的字元! 範例:搜尋含有 (gl) 或 (gd) 的那一行需要特別留意的是,在 [] 當中『謹代表一個待搜尋的字元』 例如『 a[afl]y 』代表搜尋的字串可以昰 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思! |
意義:字元集合的 RE 字符,裡面列出想要擷取的字元範圍! 範例:搜尋含有任意數字的那一行!需特別留意在字元集合 [] 中的減號 - 是有特殊意義的,他代表兩個字元之間的所有連續字元!但這個連續與否與 ASCII 編碼有關因此,你的編碼需要設定正確(在 bash 當中需要確定 LANG 與 LANGUAGE 的變數是否正確!) 例如所有大寫字元則為 [A-Z] |
意義:字元集合的 RE 字符,裡面列出不要的字串或範圍! 範例:搜尋的字串可以是 (oog) (ood) 但鈈能是 (oot) 那個 ^ 在 [] 內時,代表的意義是『反向選擇』的意思 例如,我不要大寫字元則為 [^A-Z]。但是需要特別注意的是,如果以 grep -n [^A-Z] regular_express.txt 來搜尋卻發現該檔案內的所有行都被列出,為什麼因為這個 [^A-Z] 是『非大寫字元』的意思, 因為每一行均有非大寫字元例如第一行的 "Open Source" 就有 p,e,n,o.... 等等的小寫字 |
以行为单位的新增/删除功能
以行为单位的替换与显示功能