Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5787077
  • 博文数量: 409
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 8273
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 19:15
个人简介

qq:78080458 学习交流群:150633458

文章分类

全部博文(409)

文章存档

2019年(127)

2018年(130)

2016年(20)

2015年(60)

2014年(41)

2013年(31)

分类: LINUX

2018-12-27 07:13:20

grep

按照指定的模式,在文件中搜索匹配的行,将结果显示在标准输出。另外还有两个指令egrep相当于grep –Efgrep相当于grep -F。如果没有给出文件名,那么从标准输入读取。

此命令的适用范围:RedHatRHELUbuntuCentOSSUSEopenSUSEFedora

 

1、语法

grep [选项]  PATTERN files

grep [OPTIONS]  [-e PATTERN | -f FILE]  [FILE...]

 

2、选项列表

选项

说明

-V | --version

显示命令版本信息

--help

显示帮助文档

匹配选择

 

-E | --extended-regexp

使用扩展规则表达式解释匹配模式

-F | --fixed-strings

将匹配模式看做固定字符串

-G | --basic-regexp

使用基本规则表达式解释匹配模式

-P | --perl-regexp

使用perl表达式解释匹配模式

文件和目录选择控制

 

-a | --text

忽略二进制数据

--binary-files=TYPE

如果文件的前几个字节表示该文件包含二进制数据,则假定该文件类型是TYPE。默认情况下,TYPE为二进制,grep通常输出一行消息表示二进制文件匹配,如果没有匹配则不输出消息。如果类型不匹配,grep假定二进制文件不匹配;这相当于-i选项。如果TYPE是文本,grep会像处理文本一样处理二进制文件;这相当于-a选项。警告:“grep-binary-files=text”可能会输出二进制垃圾,如果输出是终端,并且终端驱动程序将其中的一些解释为命令,则会产生严重的副作用。

-D action | --devices=ACTION

如果输入文件是一个设备文件,那么用指定的action处理。read,像普通文件一样读取设备,skip,忽略设备

-d action | --directories=ACTION

如果查找的是目录文件,那么使用指定的操作处理。read,像普通文件一样读取目录;skip,忽略目录;recursive,递归当时读取子目录下文件。

--exclude=per

忽略文件名匹配per的文件       

--exclude-from=FILE

跳过其基本名称与从FILE中读取的任何文件名全局匹配的文件。

--exclude-dir=DIR

从递归搜索中排除匹配模式DIR的目录

-I

处理二进制文件,就像它不包含匹配的数据一样;等价于“--binary-files=without-match

--include=GLOB

只搜索其基本名称与GLOB匹配的文件

-R | -r | --recursive

递归方式读取目录下所有文件

行数控制

 

-A num | --after-context=NUM

显示匹配行以及之后指定的行数

-B num | --before-context=NUM

显示匹配行以及之前指定的行数

-C num | -NUM | --context=NUM

显示匹配行以及之前和之后的指定行数

输出行控制

 

-b | --byte-offset

在显示匹配的行之前,打印该行第一个字符的偏移位置

-H | --with-filename

为每个匹配的行显示文件名,如果有多个文件的话,这是默认操作

-h | --no-filename

显示匹配的行,但是不显示文件名。如果搜索一个文件时,这是默认操作

-n | --line-number

显示匹配的行之前,显示行号

-T | --initial-tab

确保实际行内容的第一个字符位于制表符停止上,使制表符的对齐看起来正常。

-u | --unix-byte-offsets

报告Unix样式的字节偏移量。此开关使grep报告字节偏移量,就像文件是Unix样式的文本文件一样

-Z | --null

输出一个零字节(ASCII null字符),而不是通常跟随文件名的字符。例如,“grep –lz”在每个文件名之后输出一个零字节,而不是通常的换行符。

输出控制

 

-c | --count

统计符合匹配的行数

--color[=WHEN] |  --colour[=WHEN]

用转义序列包围匹配(非空)字符串、匹配行、上下文行、文件名、行号、字节偏移量和分隔符(用于字段和上下文行组),以便在终端上显示它们的颜色。颜色由环境变量grep_colors定义。仍然支持不推荐的环境变量grep_color,但它的设置没有优先级。WHEN的有效值是neveralwaysauto

-L | --files-without-match

禁止正常输出;而是打印通常不会输出的每个输入文件的名称。扫描将在第一次匹配的时候停止。

-l

显示内容符合指定匹配模式的文件名

-m num  |  --max-count=NUM

在匹配num行之后,停止搜索

-o | --only-matching

只显示匹配行的匹配字符

-q | --quite

静默模式,搜索完成之后返回0

-s | --no-messages

不显示文件不存在和文件不可读的错误信息

模式控制

 

-e parttern  |  --regexp=PATTERN

设置匹配模式

-f file  | --file=FILE

将给定的文件内容作为匹配模式

-i  |  --ignore-case

忽略大小写

-v | --invert-match

显示不符合匹配模式的行

-w | --word-regexp

显示整个字都匹配的行

-x | --line-regexp

显示整行都匹配的行

其他选项

 

--line-buffered

对输出使用行缓冲。这会导致性能损失。

--mmap

如果可能,使用mmap(2)系统调用来读取输入,而不是默认的read(2)系统调用。在某些情况下,mmap会产生更好的性能。但是,-mmap可能导致未定义的行为(包括核心转储),如果一个输入文件在grep运行时收缩,或者如果发生I/O错误。

-U | --binary

将文件视为二进制文件。

-z | --null-data

将输入视为一组行,每一行以零字节(ASCII NUL字符)结尾,而不是换行符。

 

3、环境变量

grep的行为受到以下环境变量的影响。

GREP_OPTIONS,此变量指定放置在任何显式选项前面的默认选项。选项规范由空格分隔。反斜杠转义下一个字符,因此它可以指定包含空格或反斜杠的选项。例如,如果GREP_OPTIONS’--binary-files=without-match --directories=skip’,那么grep执行的时候就假设已经有了这两个选项。

GREP_COLOR,此变量指定用于突出显示匹配(非空)文本的颜色。

GREP_COLORS,指定用于突出显示输出的各个部分的颜色和其他属性。它的值是一个以冒号分隔的功能列表,默认为ms=0131:mc=0131:sl=cx=fn=35:ln=32:bn=32:se=36,省略了rvne布尔功能(false)。支持的功能如下所示。

sl=,用于整个选定行的SGR子字符串(-v命令行选项省略时的匹配行,或指定-v时不匹配的行)。但是,如果指定了布尔rv功能和-v命令行选项,则它将应用于上下文匹配行。默认值为空(即终端的默认颜色对)

cx=,用于整个上下文行的SGR子字符串(即省略-v命令行选项时的非匹配行,或指定-v时的匹配行)。但是,如果指定了布尔RV功能和-v命令行选项,则它将适用于选定的非匹配行。默认值为空(即终端的默认颜色对)

rv,当指定-v命令行选项时,逆转(掉期)“sl=”“cx=”功能的布尔值。缺省值为false(即省略了功能)

mt=0131,用于匹配任何行中的非空文本的sgr子字符串。(这仅在省略-v命令行选项时使用。)当启动时,sl=(cx=)能力的效果保持活跃。默认值是当前行背景上的粗体红色文本前景。

阅读(3729) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~