Linux基础命令---显示文本grep
grep
按照指定的模式,在文件中搜索匹配的行,将结果显示在标准输出。另外还有两个指令egrep相当于grep –E,fgrep相当于grep -F。如果没有给出文件名,那么从标准输入读取。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
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的有效值是never,always,auto。 |
|
-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=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36,省略了rv和ne布尔功能(即false)。支持的功能如下所示。
sl=,用于整个选定行的SGR子字符串(即-v命令行选项省略时的匹配行,或指定-v时不匹配的行)。但是,如果指定了布尔rv功能和-v命令行选项,则它将应用于上下文匹配行。默认值为空(即终端的默认颜色对)。
cx=,用于整个上下文行的SGR子字符串(即省略-v命令行选项时的非匹配行,或指定-v时的匹配行)。但是,如果指定了布尔RV功能和-v命令行选项,则它将适用于选定的非匹配行。默认值为空(即终端的默认颜色对)。
rv,当指定-v命令行选项时,逆转(掉期)“sl=”和“cx=”功能的布尔值。缺省值为false(即省略了功能)。
mt=01;31,用于匹配任何行中的非空文本的sgr子字符串。(这仅在省略-v命令行选项时使用。)当启动时,sl=(或cx=)能力的效果保持活跃。默认值是当前行背景上的粗体红色文本前景。
ms=01;31,用于匹配选定行中的非空文本的sgr子字符串。(这仅在省略-v命令行选项时使用。)当启动时,sl=(或cx=)能力的效果保持活跃。默认值是当前行背景上的粗体红色文本前景。
mc=01;31,用于匹配上下文行中的非空文本的sgr子字符串。(这仅在省略-v命令行选项时使用。)当启动时,sl=(或cx=)能力的效果保持活跃。默认值是当前行背景上的粗体红色文本前景。
fn=35,用于任何内容行前缀的文件名的SGR子字符串。默认值是终端默认背景上的洋红色文本前景。
ln=32,任何内容行前缀的行号的SGR子字符串。默认值是终端默认背景上的绿色文本前景。
bn=32,用于任何内容行前缀的字节偏移的SGR子字符串。默认值是终端默认背景上的绿色文本前景。
se=36,当指定了非零上下文(--),SGR子字符串用于在选定的行字段(:)、上下文行字段之间(-)和相邻行组之间插入分隔符。默认值是终端默认背景上的青色文本前景。
ne,布尔值,该值防止在每次彩色项结束时使用擦除入行(EL)对右(\33[K]清除到行尾的值。这是在不支持EL的终端上需要的。对于没有应用Back_COLOR_ERASE(BCE)布尔终止功能的终端、所选择的高亮颜色不影响背景、或者当EL太慢或导致过多闪烁时,它在其他情况下是有用的。默认值为false(即省略功能)
LC_ALL, LC_COLLATE, LANG,这些变量指定LC_COLLATE类别的区域设置,该类别确定用于解释范围表达式(如[a-z])的排序序列。
LC_ALL, LC_CTYPE, LANG,这些变量指定LC_CTYPE类别的区域设置,它决定字符的类型,例如,哪些字符是空格。
LC_ALL, LC_MESSAGES, LANG,这些变量指定LC_MESSAGES类别的区域设置,它确定grep用于消息的语言。默认的C语言环境使用美式英语消息。
POSIXLY_CORRECT,如果设置,grep的行为与POSIX.2所要求的一样;否则,grep的行为更像其他GNU程序。POSIX.2要求必须将文件名后面的选项视为文件名;默认情况下,这些选项被排到操作数列表的前面,并被视为选项。此外,POSIX.2还要求将未被承认的选项诊断为“非法”,但由于它们并不真正违反法律,默认情况是将它们诊断为“无效”。POSIXLY_RIDER还禁用_N_GNU_NOOPTION_ARGV_LANGS_,如下所述。
_N_GNU_nonoption_argv_flags_,(这里N是grep的数字进程ID。)如果此环境变量值的ith字符为1,则不要将grep的ith操作数视为选项,即使它似乎是选项之一。shell可以为其运行的每个命令在环境中放置此变量,指定哪些操作数是文件名通配符展开的结果,因此不应被视为选项。此行为仅在GNU C库中可用,且仅在未设置POSIXLY_RIDER时才可用。
4、退出码
通常,如果找到选定的行,则退出状态为0,否则为1。但是,如果发生错误,退出状态为2,除非使用-q、--quite、--slient选项,并找到选定的行。但是,请注意,对于grep、CMP和diff等程序,POSIX只要求在出现错误时的退出状态大于1;因此,出于可移植性的考虑,建议使用对此一般条件进行测试的逻辑,而不是与2严格相等的逻辑。
5、实例
1)显示文件中以2开头的行
|
|
2)显示不包含23的行
|
|
3)显示整个字都匹配的行
|
|
Linux基础命令---显示文本grep的更多相关文章
- Linux基础命令---显示文本look
look 显示文件中以特定字符串开始的行.在look执行二进制搜索时,必须对文件中的行进行排序.如果未指定文件,则使用文件“/usr/share/dict/words“,只比较字母数字字符,忽略字母字 ...
- linux基础命令---显示进程ps
ps ps指令可以显示系统中当前进程的信息,它的输出结果是高度可定制的.如果您希望重复更新所选内容和显示的信息,请使用top(1)代替. 请注意,“ps-aux”与“ps aux”不同.POSIX和U ...
- 『学了就忘』Linux基础命令 — 31、grep命令和通配符
目录 1.grep命令介绍 2.find命令和grep命令的区别(重点) (1)find命令 (2)grep命令 3.通配符与正则表达式的区别 (1)通配符: (2)正则表达式: 1.grep命令介绍 ...
- Linux基础命令---elinks文本浏览器
elinks elinks指令是一个纯文本格式的浏览器,支持颜色.表格.鼠标.菜单操作. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- Linux基础命令---显示路由表route
route route指令用于显示或者修改IP路由表.它的主要用途是在使用ifconfig(8)程序配置接口后,通过接口设置到特定主机或网络的静态路由.当使用add或del选项时,路由将修改路由表.如 ...
- Linux基础命令---显示域名ypdomainname
ypdomainname ypdomainname指令显示由函数“getdomainname”返回的主机域名,使用这个指令也可以设置一个主机NIS/YP域名. 此命令的适用范围:RedHat.RH ...
- Linux基础命令---显示主机名hostname
hostname hostname指令用于设置或者显示系统主机名,没有任何参数就会返回gethostname()函数的返回值.使用hostname指令之后,主机名会立马被修改,但是重启系统之后就失效了 ...
- Linux基础命令---显示树形进程pstree
pstree pstree显示正在运行的进程的树形结构,树以PID为根:如果省略了pid则以init为根.如果指定了用户名,则显示根植于该用户拥有的进程的所有进程树.如果pstree被调用为pstre ...
- Linux基础命令---显示登录用户w
w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...
随机推荐
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
启动spring boot项目的时候遇到了报错: -Sep- ::15.513 INFO [main] org.apache.catalina.core.StandardService.startIn ...
- MapperScannerConfigurer
MapperScannerConfigurer转自:http://www.cnblogs.com/fangjian0423/p/spring-mybatis-MapperScannerConfigur ...
- 近期在看的一段JS(谁能看出我想实现什么功能)
示例代码: <script type="text/javascript"> !function(){ var e=/([http|https]:\/\/[a-zA-Z0 ...
- POJ-1887 Testing the CATCHER(dp,最长下降子序列)
Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16515 Accepted: 6082 ...
- 编译x11版本qt
用buildroot 选择x11相关 在选择qt x11版本 export PATH=~/buildroot/output/host/usr/bin:$PATH 进入~/buildroot/out ...
- kubernetes实战(十一):k8s使用openLDAP统一认证
1.基本概念 为了方便管理和集成jenkins,k8s.harbor.jenkins均使用openLDAP统一认证. 2.部署openLDAP 此处将openLDAP部署在k8s上,openLDAP可 ...
- python-面向对象-10-单例
单例 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟 ...
- table切换(自己写)
<!DOCTYPE HTML><html> <head> <meta charset="utf-8"> <meta name= ...
- TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库
这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...
- Centos 设置zookeeper开机自启动
把zookeeper做成服务 1.进入到/etc/rc.d/init.d目录下,新建一个zookeeper脚本 [root@zookeeper ~]# cd /etc/rc.d/init.d/ [ro ...