GREP 是 Global Regular Expression Print 的缩写
1.grep是一个搜索程序,它只能搜索匹配一个正则表达式的一行的存在性.
2.grep可以对一行采取唯一的动作是把它发送到标准输出. 如果该行不匹配正则表达式,则其不被打印.
3.行的选择只基于正则表达式. 行编号或其他准则不能用于选择行.
4.grep是一个过滤器. 它可用在管道的左边或右边.
5.grep不能用于增加,删除或修改行.
6.grep不能用于只打印行的一部分.
7.grep不能只读取文件的一部分.
8.grep不能基于前面的内容或下一行来选择一行.只有一个缓冲区,它只保存当前行.
一般格式:grep [options] 基本正则表达式 [filename]
grep家族的选项:
-b 在每一行前加上所在文件块的编号,就是指起文件中的字节偏移量
-c 只打印匹配模式的行编号记数
-i 在匹配文本时忽略大小写
-h 在查找多个文件时,指示grep不要将文件名加入到输入之前
-l 打印至少有一行匹配模式的文件列表
-n 在每行前显示其行编号
-s 哑模式. 执行其功能,但抑制所有输出
-v 逆向输出. 打印不匹配模式的行
-x 只打印完全匹配模式的行
-r 递归查询目录下文件
-f expfile 从expfile文件中获取要搜索的模式,一个模式占一行
举个例子:这有个文件夹 里面内容为
现在需要查找main这个关键字,要求知道偏移量,在文件的多少行,这是使用命令:
grep -b -n 'main' *.c
现在我要在上级文件夹中查找这些关键字,使用-r表示包含下级目录进行递归查询。
./*指明在当前目录进行查询
先看下起上级文件夹中的文件有:
./*指明在当前目录进行查询。
这次仍然查找main这个字符串,使用命令
grep -n 'main' -r ./*,事实上,要查找的关键字貌似最好加上"",不过我发现不加引号也行,不过还是加上把,可能出现什么位置错误。显示为
应该就是这么多了吧 关于grep命令的,如果发现还有什么会及时更新的~