grep的全称是global regular expression print,是linux中最强大的文本搜索命令之一,常用于搜索文本文件中是否含有某些特定模式的字符串。该命令以行为单位读取文本并使用正则表达式进行匹配,匹配成功后打印出该行文本。
grep
1.g r e p一般格式为:
grep [选项]基本正则表达式[文件]
这里基本正则表达式可为字符串。
8.1.1 双引号引用
在g r e p命令中输入字符串参数时,最好将其用双引号括起来。例如: “m y s t r i n g” 。这样做
有两个原因,一是以防被误解为 s h e l l命令,二是可以用来查找多个单词组成的字符串,例如:
“jet plane ” ,如果不用双引号将其括起来,那么单词 p l a n e将被误认为是一个文件,查询结果
将返回“文件不存在”的错误信息。
在调用变量时,也应该使用双引号,诸如: g r e p“$ M Y VA R”文件名,如果不这样,将
没有返回结果。
在调用模式匹配时,应使用单引号。
2 grep选项
常用的g r e p选项有:
-n :显示行号
-o :只显示匹配的内容
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc
-A :如果匹配成功,则将匹配行及其后n行一起打印出来
-B :如果匹配成功,则将匹配行及其前n行一起打印出来
-C :如果匹配成功,则将匹配行及其前后n行一起打印出来
--color
-c :如果匹配成功,则将匹配到的行数打印出来
-E :等于egrep,扩展模式匹配,例如要匹配"a|b"必须用扩展模式,grep -E "a|b" string,或者egrep
-i :忽略大小写
-w:只匹配整个单词,而不是字符串的一部分
-h 在查找多个文件时,指示grep不要将文件名加入到输入之前
-s 哑模式. 执行其功能,但抑制所有输出
-x 只打印完全匹配模式的行
-r 递归查询目录下文件
这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
'^':指匹配的字符串在行首,