grep
是一个在 Unix 和 Linux 系统中广泛使用的命令行工具,主要用于搜索文本文件中匹配指定模式(包括简单字符串或正则表达式)的行。以下是一些基本用法和选项:
基本语法:
grep [options] PATTERN [FILE...]
options
:可选参数,用来改变 grep 行为。PATTERN
:要搜索的模式,可以是普通文本字符串或正则表达式。FILE...
:待搜索的一个或多个文件名。如果不指定文件名,grep 会从标准输入读取数据。
常用选项:
-i
:忽略大小写,即搜索时不区分大小写。-v
:反向选择,显示不包含匹配项的行。-n
:显示匹配行及其对应的行号。-l
:只列出包含匹配项的文件名,而不是内容本身。-c
:仅输出每个文件中匹配行的数量。-r
或-R
:递归地搜索目录及其子目录中的文件。-e
:允许指定多个不同的模式,或者使用扩展正则表达式(默认情况下,grep 支持 BRE 基本正则表达式,而-E
则开启 ERE 扩展正则表达式支持)。-w
:匹配整个单词,避免出现在其他单词内部的匹配。-h
:在多文件搜索时隐藏文件名(只对匹配的内容进行输出)。-s
:静默模式,当搜索二进制文件时不会报错。
示例:
在单个文件中查找特定字符串:
grep "example" file.txt
忽略大小写查找:
grep -i "Example" file.txt
显示包含字符串并带有行号:
grep -n "example" file.txt
查找多个文件,并列出含有匹配项的文件名:
grep -l "example" file1.txt file2.txt
使用管道符
|
进行逻辑“或”操作:grep 'string1|string2' file.txt
或者结合
-E
使用扩展正则表达式实现相同功能:grep -E 'string1|string2' file.txt
递归查找当前目录下所有文件中包含某个字符串的行:
grep -r "example" .
这些只是 grep
的一部分常用用法,根据实际需求,您可以组合使用这些选项来完成更复杂的搜索任务。