RE字符 意义与范例
^word 待搜寻的word在行首。例如 搜寻以#开始的行 grep -n '^#' a.txt
word$ 待搜索的word在行尾。例如搜索以!结束的行 grep -n '!$' a.txt
. 代表一定有一个字符的字符 例如 grep -n 'e.e' a.txt
\ 跳脱符号,将特殊符号的特殊意义去除 例如 搜索有单引号的行 grep -n \' a,txt
* 重复零个到无穷个前一个字符 ,例如找出含有es ,ess esss等等的字符, grep -n 'ess*' a.txt
[list] 字符集合的RE字符,里边列出想要撷取的字符,例如,搜索含有gl或gd的行 grep -n 'g[ld] a.txt
[n1-n2] 字符集合的RE字符,里边列出想要撷取的字符范围 grep -n '[0-9]' a.txt
[^list] 反向选择,里边列出不要的字符串或者范围 例如不是以字符开头的 grep -n '^[^a-zA-Z]' a.txt
\{n,m\} 连续n到m个前一个RE字符。若为\{n\} 则是连续n个的前一个RE字符 ,若是\{n,\}则是连续n个以上的前一个RE字符,例如在g与g之间有2-5个o grep -n 'g\o{2,5\}g' a.txt
强调一点,正规表示法的特殊字符与一般在指令中使用的通配符并不相同,例如在通配符中*表示0到无限多个字符,而在正规表示法中他表示重复0到无限多次前一个字。例如,ls并不支持正规表示法,ls -l * 表示任意名字的档案, ls -l a*表示以a为开头 档案, 但是使用正规表示法表示以a为开头的档名,则需要搭配支持正规表示法的工具 ls | grep -n '^a.*'