grep
1、grep一般格式为:
grep [选项] 基本正则表达式 [文件]
这里基本正则表达式可为字符串。
2、双引号引用
在grep命令中输入字符串参数时,最好将其用双引号括起来。例如“mystring”。这样做有两个原因,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串,例如:“jet plane”,如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息。
在调用变量时,也应该使用双引号,诸如: grep“$MYVAR”文件名,如果不这样,将
没有返回结果。
在调用模式匹配时,应使用单引号。
3、常用的grep选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
4、查询多个文件
如果要在当前目录下所有.doc文件中查找字符串“sort”,方法如下:
$ grep "sort" *.doc
或在所有文件中查询单词“sort it”
$ grep "sort it" *
5、在文本文件中grep选项的用法。
(1)、行匹配
$ grep -c "48" data.f
$ 4
grep返回数字4,意义是有4行包含字符串“48”。
(2)、行数
$ grep -n "48" data.f
显示满足匹配模式的所有行行数,行数在输出第一列,后跟包含48的每一匹配行。(行数在第一列,和$在一列)
(3)、显示非匹配行
$ grep -v "48" data.f
显示所有不包含48的各行
(4)、精确匹配
可能大家已注意到,在上一例中,抽取字符串“ 48”,返回结果包含诸如484和483等包含“48”的其他字符串,实际上应精确抽取只包含48的各行。注意在每个匹配模式中抽取字符串后有一个<Tab>键,所以应操作如下:
$ grep "48<tab>" data.f
<tab>表示点击tab键。
使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加\>。假定现在精确抽取48,方法如下:
$ grep "48\>" data.f
(5)、大小写敏感
缺省情况下, grep是大小写敏感的,如要查询大小写不敏感字符串,必须使用-i开关。在data.f文件中有月份字符Sept,既有大写也有小写,要取得此字符串大小写不敏感查询,方法如下:
$ grep -i "sept" data.f
(6)、grep和正则表达式
此内容暂且不介绍