grep 是 Unix/Linux 系统中一个强大的文本搜索工具,用于在文件或标准输入中查找与给定模式匹配的行。它会根据你指定的模式(通常是正则表达式)来过滤输入并显示符合条件的行。以下是 grep 命令的详细解释,包括常用选项和用法示例。
基本用法:
grep [选项] 模式 文件- 模式:可以是字符串或正则表达式,用来匹配你想要查找的内容。
- 文件:表示要查找的文件,如果没有指定文件,则默认从标准输入(如键盘输入或管道)读取。
常用选项:
- -i:忽略大小写,例如:- grep -i "pattern" file.txt
- -v:反转匹配,即显示不匹配的行,例如:- grep -v "pattern" file.txt
- -r或- -R:递归查找目录中的文件,例如:- grep -r "pattern" /path/to/directory/
- -n:显示匹配行的行号,例如:- grep -n "pattern" file.txt
- -l:显示匹配到的文件名,而不显示具体内容,例如:- grep -l "pattern" *.txt
- -c:统计匹配的行数,例如:- grep -c "pattern" file.txt
- -o:只输出匹配到的部分,而不是整行,例如:- grep -o "pattern" file.txt
- -A N:显示匹配行以及匹配行后 N 行,例如:- grep -A 2 "pattern" file.txt
- -B N:显示匹配行以及匹配行前 N 行,例如:- grep -B 2 "pattern" file.txt
- -C N:显示匹配行及其前后 N 行,例如:- grep -C 2 "pattern" file.txt
- -w:匹配整词,确保匹配的是整个单词,而不是单词的一部分,例如:- grep -w "word" file.txt
- --color:高亮显示匹配的部分,一般系统默认启用,例如:- grep --color "pattern" file.txt
例子:
- 基本查找: - grep "hello" file.txt- 查找 - file.txt中包含 "hello" 的行。
- 递归查找: - grep -r "hello" /path/to/directory/- 递归查找目录 - /path/to/directory/中所有文件包含 "hello" 的行。
- 忽略大小写查找: - grep -i "HELLO" file.txt- 忽略大小写查找 "HELLO" 或 "hello" 或任何大小写组合的匹配项。 
- 显示匹配及其上下文: - grep -C 3 "error" logfile.txt- 查找 "error" 并显示匹配行及其前后 3 行。 
- 统计匹配的行数: - grep -c "error" logfile.txt- 统计 - logfile.txt中包含 "error" 的行数。
- 只显示匹配到的文件名: - grep -l "error" *.log- 在当前目录下的所有 - .log文件中查找包含 "error" 的文件,并只显示文件名。
- 排除包含特定模式的行: - grep -v "warning" logfile.txt- 显示 - logfile.txt中不包含 "warning" 的行。
- 匹配整词: - grep -w "is" file.txt- 只匹配单词 "is",不会匹配 "this" 或 "inside"。 
- 查找多个模式(使用正则表达式): - grep -E "pattern1|pattern2" file.txt- 使用 - -E选项启用扩展正则表达式,查找匹配 "pattern1" 或 "pattern2" 的行。
- 从命令输出中过滤: - ps aux | grep "nginx"- 通过管道过滤 - ps aux的输出,显示包含 "nginx" 的进程信息。
正则表达式支持:
grep 支持基本的和扩展的正则表达式模式匹配。以下是一些常用的正则表达式示例:
- ^pattern:匹配以- pattern开头的行。
- pattern$:匹配以- pattern结尾的行。
- .:匹配任意单个字符。
- *:匹配前面的字符任意次。
- [abc]:匹配- a,- b,或- c中的任意一个字符。
- [^abc]:匹配不包含- a,- b或- c的字符。
例如:
grep "^start" file.txt查找以 "start" 开头的行。
grep "end$" file.txt查找以 "end" 结尾的行。
实际使用示例:
cat /userdata/log/mcu/message | grep Version
 
                            