grep 默认仅支持基础正则表达式,如果要使用延伸型正则 表达式,你可以使用 grep -E , 不过更建议直接使用 egrep !直接区分指令比较好记忆!其 实 egrep 与 grep -E 是类似命令别名的关系。
RE字符 | 意义与范例 |
---|---|
+ | 意义:重复“一个或一个以上”的前一个 RE 字符 范例:搜寻 (god) (good) (goood)... 等等的字串。 那个 o+ 代表“一个以上的 o ”所以,下面的执行成果 会将第 1, 9, 13 行列出来。 > egrep -n 'go+d' regular_express.txt |
? | 意义:“零个或一个”的前一个 RE 字符 范例:搜寻 (gd) (god) 这两个字串。 那个 o? 代表“空的或 1 个 o ”所以,上面的执行成果会将第 13, 14 行列出来。 有 没有发现到,这两个案例( 'go+d' 与 'go?d' )的结果集合与 'go*d' 相同? 想想 看,这是为什么喔! _ > egrep -n 'go?d' regular_express.txt |
| | 意义:用或( or )的方式找出数个字串 范例:搜寻 gd 或 good 这两个字串,注意,是“或”! 所以,第 1,9,14 这三行都可以被打印出来喔!那如果还想要找出dog 呢? > egrep -n 'gd|good' regular_express.txt > egrep -n 'gd |
() | 意义:找出“群组”字串 范例:搜寻 (glad) 或 (good) 这两个字串,因为 g 与 d 是重复的,所以, 我就可以将 la 与 oo 列于 ( ) 当中,并以 |
()+ | 意义:多个重复群组的判别 范例:将“AxyzxyzxyzxyzC”用 echo 叫出,然后再使 用如下的方法搜寻一下! > echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C' |