article/linux/linux使用grep命令.md
2022-10-26 18:59:55 +08:00

95 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## grep 命令 详解
```
用法grep [OPTION]... PATTERN [FILE]...
在每个 FILE 或标准输入中搜索 PATTERN。
PATTERN 默认是基本正则表达式 (BRE)。
示例grep -i 'hello world' menu.h main.c
正则表达式选择和解释:
-E, --extended-regexp PATTERN 是扩展正则表达式 (ERE)
-F, --fixed-strings PATTERN 是一组换行符分隔的固定字符串
-G, --basic-regexp PATTERN 是基本正则表达式 (BRE)
-P, --perl-regexp PATTERN 是 Perl 正则表达式
-e, --regexp=PATTERN 使用 PATTERN 进行匹配
-f, --file=FILE 从 FILE 中获取 PATTERN
-i, --ignore-case 忽略大小写区别
-w, --word-regexp 强制 PATTERN 只匹配整个单词
-x, --line-regexp 强制 PATTERN 只匹配整行
-z, --null-data 数据行以 0 字节结尾,而不是换行符
各种各样的:
-s, --no-messages 抑制错误消息
-v, --invert-match 选择不匹配的行
-V, --version 显示版本信息并退出
--help 显示此帮助文本并退出
输出控制:
-m, --max-count=NUM 在 NUM 个匹配后停止
-b, --byte-offset 使用输出行打印字节偏移量
-n, --line-number 打印行号和输出行
--line-buffered 每行刷新输出
-H, --with-filename 打印每个匹配的文件名
-h, --no-filename 禁止输出文件名前缀
--label=LABEL 使用 LABEL 作为标准输入文件名前缀
-o, --only-matching 仅显示与 PATTERN 匹配的行的一部分
-q, --quiet, --silent 抑制所有正常输出
--binary-files=TYPE 假设二进制文件是 TYPE
TYPE 是“二进制”、“文本”或“不匹配”
-a, --text 等价于 --binary-files=text
-I 相当于 --binary-files=without-match
-d, --directories=ACTION 如何处理目录;
ACTION 是“读取”、“递归”或“跳过”
-D, --devices=ACTION 如何处理设备、FIFO和套接字
动作是“阅读”或“跳过”
-r, --recursive 像 --directories=recurse
-R, --dereference-recursive
同样,但遵循所有符号链接
--include=FILE_PATTERN
仅搜索与 FILE_PATTERN 匹配的文件
--exclude=FILE_PATTERN
跳过匹配 FILE_PATTERN 的文件和目录
--exclude-from=FILE 跳过与 FILE 中任何文件模式匹配的文件
--exclude-dir=PATTERN 匹配 PATTERN 的目录将被跳过。
-L, --files-without-match 仅打印不包含匹配项的文件名
-l, --files-with-matches 只打印包含匹配项的文件名
-c, --count 仅打印每个文件的匹配行数
-T, --initial-tab 使标签对齐(如果需要)
-Z, --null 在文件名后打印 0 字节
上下文控制:
-B, --before-context=NUM 打印前导上下文的 NUM 行
-A, --after-context=NUM 打印 NUM 行尾随上下文
-C, --context=NUM 打印 NUM 行输出上下文
-NUM 与 --context=NUM 相同
--group-separator=SEP 使用 SEP 作为组分隔符
--no-group-separator 使用空字符串作为组分隔符
--color[=WHEN],
--color[=WHEN] 使用标记突出匹配的字符串;
WHEN 是“总是”、“从不”或“自动”
-U, --binary 在 EOL (MSDOS/Windows) 时不去除 CR 字符
-u, --unix-byte-offsets 报告偏移量,就好像 CR 不存在一样
(MSDOS/Windows)
“egrep”的意思是“grep -E”。 “fgrep”的意思是“grep -F”。
不推荐直接调用“egrep”或“fgrep”。
当 FILE 为 - 时,读取标准输入。没有 FILE阅读 .如果是命令行
-r 给出, - 否则。如果给出的 FILE 少于两个,则假定为 -h。
如果选择了任何一行,则退出状态为 0否则为 1
如果发生任何错误且未给出 -q则退出状态为 2。
将错误报告至bug-grep@gnu.org
GNU Grep 主页:<http://www.gnu.org/software/grep/>
使用 GNU 软件的一般帮助:<http://www.gnu.org/gethelp/>
```
> linux通过grep根据关键字查找日志文件上下文 https://www.cnblogs.com/xuzhujack/p/11116525.html