grep命令是Linux系统中用于文本搜索的核心工具,支持基于字符串和正则表达式匹配文件内容,是日常运维和开发过程中高频使用的命令之一。

grep命令基础语法结构
grep命令的基础语法格式如下:
grep [选项参数] 匹配模式 [目标文件]
其中匹配模式可以是普通字符串,也可以是正则表达式,目标文件可以是一个或多个,如果不指定目标文件,grep会默认从标准输入读取内容。
常用选项参数说明
grep提供了丰富的选项参数,以下是使用频率较高的参数:
- -i:忽略匹配时的大小写差异
- -n:输出匹配行的同时显示行号
- -r:递归搜索指定目录下的所有文件
- -v:反向匹配,输出不包含匹配模式的内容
- -l:仅输出包含匹配模式的文件名,不显示具体匹配内容
- -E:支持扩展正则表达式,等同于egrep命令
基础使用示例
匹配单个文件中的字符串
在test.txt文件中搜索包含hello的行:
grep "hello" test.txt
忽略大小写搜索并显示行号
搜索包含hello的行,忽略大小写同时显示行号:
grep -in "hello" test.txt
递归搜索目录下的文件
在/config目录下递归搜索包含port字符串的所有文件:
grep -r "port" /config
反向匹配示例
输出test.txt中不包含error的所有行:
grep -v "error" test.txt
结合正则表达式的语法示例
grep支持标准正则表达式,使用-E参数可以支持更多扩展正则语法:
匹配以特定字符开头的行
搜索test.txt中以root开头的行:
grep -E "^root" test.txt
匹配多个可选模式
搜索包含hello或者world的行:
grep -E "hello|world" test.txt
匹配连续重复字符
搜索包含连续两个相同数字的行:
grep -E "([0-9])1" test.txt
注意事项
如果匹配模式中包含空格或者特殊字符,需要使用英文单引号或者双引号包裹模式内容,避免被shell解析。如果搜索的文件中包含二进制文件,grep默认会提示匹配到二进制文件,可以添加-a参数强制将二进制文件按文本处理。