grep 是一个Linux system常见一个正则命令。
作用:过滤数据。
下面我以marc.wang文件举例。
tmp]# cat -n marc.wang
1 "Open Source" is a good mechanism to develop programs.
2 apple is my favorite food.
3 Football game is not use feet only.
4 this dress doesn't fit me.
5 However, this dress is about $ 3183 dollars.
6 GNU is free air not free beer.
7 Her hair is very beauty.
8 I can't finish the test.
9 Oh! The soup taste good.
10 motorcycle is cheap than car.
11 This window is clear
12 the symbol '*' is represented as start.
13 Oh! My god!
14 The gd software is a library for drafting programs.
15 You are the best is mean you are the no. 1.
16 The world is the same with "glad".
17 I like dog.
18 google is the best tools for search keyword.
19 goooooogle yes!
20 go! go! Let's go.
21 # I am VBird
22 goooog
-v 取反
如 : 过滤不包涵google这个字符的数据
由此可见,最后没有了,这就是-v 的作用,例子举多了,原理我们就明白了。
-n 标记文件的行号
这里我要说下,linux 文件里有空行 grep -n 也会把他当作一行来看。不会以空来看。
-i 忽略大小写
明显看到food 个 Foot 都被过滤出来啦。
-r 递归过滤,一般用在过滤一个数据不知道在哪个文件里。而且也不知道哪个目录。
参数先介绍到这里。
下面是特殊的符号
^ 以XXX开头 . 这个点代表任意字符 $ 以XXX结尾 * 循环前一个,例:1* 系统会把1看做一个空的字符,并不是1XXXXXXXX的数据,要想1XXXXX的数据,必须这样写。1.* 注意千万别跟bash的*搞混。
我来举个例:过滤已g 开头后面的,已g结尾,中间不管有多少数据。
\ 因为正则里的 . * ^ $ 等特殊字符都有一定的作用,如果我想过滤已^开头的呢?\^ 反斜杠就会把他当成一个字符来看待。并不会去匹配。。
例:过滤 不是以.结尾的数据。
{}: 条件符, 格式: XXX\{XXXXXX\} filename
例:过滤 们要找出 g 后面接 2 到 5 个 o ,然后再接一个 g 癿字符串
阅读(373) | 评论(1) | 转发(1) |