功能:grep系列是Linux中使用频率最高的文本查找命令。主要功能是在一个或者多个文件中查找特定模式的字符串。如果该行有匹配的字符串,则输出整个行的内容。如果没有匹配的内容,则不输出任何内容。grep命令不改动源文件。
Linux的grep家族包括grep、egrep、fgrep、rgrep。grep可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

语法:grep    [选项]   PATTERN  [FILE]

在每个 FILE 或是标准输入中查找 PATTERN。默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: 

grep -i 'hello world' menu.h main.c

grep -B 5 -A 5 -i 'ApiUserName' catalina.out (输出匹配行及其前后5行)

FILE 文件控制
-B --before-context=NUM 打印以文本起始的NUM 行
-A --after-context=NUM 打印以文本结尾的NUM 行
-C --context=NUM 打印输出文本NUM 行
-NUM   等同--context=NUM
  --color[=WHEN]
--colour[=WHEN]
高亮颜色突出显示搜索的字符串。值'always', 'never', or 'auto'。
-U --binary 将文件作为二进制文件处理。仅有MS-DOS和MS-Windows支持该选项
-u --unix-byte-offsets 报告UNIX风格的字节偏移。这个选项仅在同时使用-b选项的情况下才有效;仅有MS-DOS和MS-Windows支持该选项
与 PATTERN 正则表达式相关的选项
-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 --line-regexp 强制 PATTERN 仅完全匹配字词
-x --extended-regexp 强制 PATTERN 仅完全匹配一行
-z --null-data 一个 0 字节的数据行,但不是空行
输出控制选项
-m --max-count=NUM 在找到指定数量的匹配行后停止读文件
-b --byte-offset 在显示符合样式的那一行之前,标示出该行第一个字符的编号
-n --line-number 在显示符合样式的那一行之前,标示出该行的列数编号
  --line-buffered 刷新输出的每一行
-H --with-filename 在显示符合样式的那一行之前,表示该行所属的文件名称
-h --no-filename 在显示符合样式的那一行之前,不标示该行所属的文件名称
  --label=LABEL 打印标签作为文件名的标准输入(主要用于管道处理)
例如:cat test |grep --label=test -H 123
-o --only-matching 仅输出匹配行的匹配部分
-q --quiet
--silent
抑制所有正常输出
  --binary-files=TYPE 假定二进制文件为TYPE类型文件TYPE可以为binary、text或without-match
-a --text 等价于-binary-files=text
-I --binary-files=without-match 等价于--binary-files=without-match
-d --directories=ACTION 当grep的对象为目录时用,处理目录可以读取、递归或跳过
-D --devices=ACTION 当grep的对象为处理设备、栈或套接字时必须用,处理对象可以读取或跳过
-r
-R
--recursive
--directories=recurse
相当于--directories=recurse 遍历目录
  --include=FILE_PATTERN 仅grep匹配的文件模式的文件
  --exclude=FILE_PATTERN 跳过匹配的文件模式的文件和目录进行grep匹配
  --exclude-from=FILE 跳过任一匹配文件模式的文件
  ---exclude-dir=PATTERN 跳过匹配的目录文件目录
-L --files-without-match 仅仅打印未匹配的文件的文件名
-l --files-with-matches 仅仅打印匹配的文件的文件名
-c --count 仅仅打印每个文件的匹配次数
-T --initial-tab 将标签排队(标签即文件名)
-Z --null 打印文件名,文件名与匹配行中间没有空字节
-z与-Z的区别之一:当一个文件有多个匹配行时-z只打印一次文件名,而-Z每匹配一次打印一次文件名
杂项
-s --no-messages 不显示错误信息
-v --invert-match 打印不匹配的行


GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐