grep命令与正则表达式学习笔记

1.搜寻特定字符串

-a: 将binary档案以text档案得方式搜寻数据

-c: 计算找到‘搜寻字符串’得次数

-i: 忽略大小写得不同,所以大小写视为相同

-n: 顺便输出行号

-v:反向选择,亦即显示没有‘搜寻字符串’内容的那一行

2.字符组匹配

[]中包含的任意一个字符。只能是一个

字符组支持由连字符“-”来表示一个范围。当‘-’前后构成范围时,要求前面字符的码小于后面字符的码位。

[^...]排除型字符组。排除后面的字符。只是该字符前不存在而已,如[^g]ood,goooood任然可以匹配到

[abc]                    :表示“a” 或 “b”或“c”

[0-9]                     :表示0~9中任意一个数字

[\u4e00-\u9fa5]    :表示任意一个案子

[^a1<]                   :表示出“a”、“1”、“<”外的其他任意一个字符

[^a-z]                     :表示除小写字母外的任意一个字符

3.行首符:^与行尾符:$

grep -n '^[A-Z]' filename 查看以大写字母开头,grep -n '[^A-Z]' filename 则表示除了大写字母外的所有字符。

‘^$’查找空行,‘^#’查找注释,则通过-v反向选择可以实现过滤功能。

4.任意一个字符“.”(小数点)与重复字符“*”(星号)

.小数点表示任意一个字符,也只能表示一个未知字符。

*星号代表重复前面0个或者多个字符

e*:表示具有空字符或者一个以上e字符。

ee*:表示前面第一个e字符必须存在。第二个e则可以是0个或者多个字符。

eee*:同理,前面两个e必须存在

ee*e: 第一个和第三个e必须存在

5.限定连续字符范围{ }

由于shell中{与}有特殊意义,所有在需要使用的时候要用转义字符\

\{n,m\} 表示找出n到m个前一个RE字符

\{n,\} 表示n个以上的前一个RE字符

--------《鸟哥的linux私房菜》

猜你喜欢

转载自blog.csdn.net/baconc/article/details/81071560