基本格式为:
grep option pattern file-list
grep命令用来抽出file-list中我们需要的数据,同时过滤掉那些不关心的内容。我们关心的内容体现在pattern中,它表现为一个字符串,或者是一个正则表达式,然后grep读取file-list的每一行内容,如果遇到匹配pattern的行,就把他输出到屏幕上;不匹配的那些就忽略掉。
先说pattern,当它是一个单独的字符串时,直接写就可以了;但是如果里面包含空格或其他分隔符,就需要用引号(单、双均可)括起来。当pattern表现为一个正则表达式时,如果不含控制字符,可以直接写;有控制字符时,必须要加上引号。(对于控制字符,可以搜一下或者自己在实践中总结。。其实保险起见,最好都加上引号)
file-list就是说可以检索多个文件,不同文件之间用空格隔开。file-list其实也可以用一个正则表达式代替,正则表达式好有用的说。。
剩下的就是option了,隆重介绍下:
1、-数字n
匹配到某一行时,同时把该行的上下n行显示出来
2、-b
在每行前打印字符的字节偏移量
所谓字节偏移量,我查了一些资料同时做了一些实验,得出的结论是,每行前面给出的这个偏移值指的是,该行的那个匹配模式距离文本中第一个匹配模式的距离,这个距离是以字节为单位的,计算方法就是,两个模式之间的字符数量乘以8,因为每个字符需要用8个字节表示。这跟系统设置有关,我的是ubuntu系统,并且LANG=zh_CN.UTF-8,这时每个字符,不管是不是中文字符都是用8个字节表示的。
目前还不知道这个选项有啥用。
3、-c
只显示匹配行的编号,不显示该行内容。
4、-f
指定pattern来源(比如一个文件),而不是从终端输入。
5、-h
不显示文件名前缀。
当检索多个文件时,grep默认在匹配行的前面输出文件名,使用这个选项会阻止这一行为。
6、-i
忽略pattern中的大小写。默认情况下,grep是严格区分pattern中的大小写的。
7、-q
这是一个非常重要的选项,因为在某些情况下,我们不想要grep把匹配行的内容打印出来(比如只想知道出口状态时),那么这个选项就派上用场了。
8、-l
只打印匹配的文件名。显然这是在检索多个文件时使用的(好吧,单个文件有时也有用)。
9、-L
与上面相反,只打印不匹配的文件名。
10、-n
在匹配行的前面打印行号。
11、-s
不显示错误信息,比如模式或文件不存在,grep似乎默认是有这个选项的。
12、-v
只显示不匹配的行。。。
主要就这些吧。