Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行。我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义、概念、原理、命令由于量大、琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用。鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正。

开始…….

首先,要说一下grep是什么,用在什么地方。

grep是一个linux下的命令,全称为Globle search regular expression and print out the line,是一种文本搜索工具,其中这里所描述的“文本”即类似于windows操作系统下word、excel文档的一种东西,相信绝大多数人都在excel中点击过查找按钮,输入“某某”关键字,点击确定,最后刷刷刷的出来好多我们要找的东西。So,do you understand?

简单来说可以把Grep比作“查找”按钮,相信看到这你应该明白了,不过鉴于linux系统多数时间下使用的是命令行操作而不同于windows系统的图形化界面,所以,我们在linux中要通过小黑框输入各种命令(很高端大气上档次)后才能进入一个文本,所以说,在进入文本后也是使用命令来指挥翻页、查找、修改等等。这里的“查找”即grep命令,除了这个还有egrep、fgrep,这些就先做不做赘述。

了,明白了什么是grep,下面就说说grep是怎么用的。

既然是linux下的文本搜索工具,首先就要先有个linux,然后进入linux系统,然后随便找个无关紧要的文本进去看看就是了,至于怎么进去的,自己google去,google上不去吗?那就度娘吧。

以下描述过程中的文件路径及文件请忽略,可以按这个一步一步来,也可以自己研究去。

进入系统后打开一个文件,比如说打开etc目录下的fstab文件,可以使用cat /etc/fstab这个命令,如图:

看到了下面一堆的东西,这就是该文件里面的文本,grep就是查找这里面指定的东西,比如说查找里面的etc这个单词,或者”/”这个符号等等。

了解了以上所述,我们就可以使用grep这个命令来查找了!

grep命令是有使用格式要求的,我们可以用man命令查看一下grep的使用方法,至于怎么使用”男人”这个命令,自行度娘。

上图SYNOPSIS中即为grep的使用格式

man一下这个命令会发现有很多的选项(OPTIONS),这些选项是可加可不加的

比如说grep --color=[WHEN],这里的WHEN可取auto、always、never,

当使用grep–color=auto的时候,搜索出来的东西会自动以其他颜色显示出来以便用户加以区分,always与auto的区别是always会在任何情况下都给匹配字段加上颜色标记,而auto则只在输出到终端时才加上颜色,never是从来都不加颜色的意思。如果说不加上选项,即默认输出。

其他选项:

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 ‘搜寻字符串‘ 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 ‘搜寻字符串‘ 内容的那一行

-o :只输出匹配部分

下面做几个例子就会明白了

1、将/etc/fstab文件中出现dev的行

这里面显示出来的东西已经标红了,这是因为我已经让grep自动带上—color=auto了,如下图所示,大家不用管它。

2、将/etc/fstab 中出现dev的行,同时显示这些行在/etc/fstab的行号

3、将/etc/fstab中,显示没有出现dev的行

4、计算/etc/fstab中dev出现的次数

5、将/etc/fstab 中出现dev的行,忽略大小写

6、显示/etc/fstab 中的dev

以上就是grep的基本用法

接下来将是是grep和正则表达式结合的用法,是正!则!表!达!式!啊!

显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行

至于你看到的grep后面引号里面的是什么………以后有时间再解释……….推荐读《正则表达式30分钟入门教程》

下面说一下egrep和fgrep的用法

其实grep –E 和egrep是一个意思,但是还是有差异的,两者的区别:

1、  grep后接的正则表达式里面有转义符”\“而egrep中没有”\“(锚定符号除外);

举个栗子

我们还是显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行,这次用egrep

2、  egrep中可以使用a|b这种或者关系

再再举个栗子

显示当前系统上root、fedora或user1用户的默认shell

这就是egrep的用法,和grep只有谨小慎微的不同

最后一个fgrep,不支持正则表达式,仅用于速查,没什么可讲的。

以上为个人总结,语义如有歧义或描述不标准的地方,望指正。

时间: 2024-10-24 06:42:58

Linux中文本搜索工具“grep”命令详解的相关文章

Linux下文本搜索工具grep命令使用入门

grep命令入门 如果想通过使用grep命令来实现理想化的文本搜索,对正则表达式的了解是比不可少的.文献1对正则表达式语法做了一个简单的介绍,文献2提供了一个简单的入门.码农也可以自己google一下其他的参考资料.下面就grep命令的使用做个入门级的介绍. 1.1 grep命令的变种 linux下除了grep命令可以完成文本搜索外,还存在egrep,fgrep,rgrep三个命令.这三个命令都是由grep加上一些控制参数演变而来,如egrep=grep -E, fgrep=grep -F, r

文本查找工具 find命令详解

本文旨在学习find命令常用用法 find命令语法 find [option] [查找路径] [查找条件][处理动作] 查找路径:指定具体目标路径:默认为当前目录. 查找条件:指定的查找标准,可以是文件名.大小.类型.权限等:默认会找出指                   定路径下的所有文件. 处理动作:对符合条件的文件做操作,默认输出至屏幕 find查找条件详解 根据文件名和inode查找: -name <文件名称>:支持使用glob *, ?, [], [^] -iname <文件

Linux 系统文本编辑器vi常用命令详解(操作演示)

引言: 在Linux中我们常用的文本编辑器有vi.vim(vi的增强版本).而且vi编辑器不仅仅是适用于Linux,它是所有Unix以及Linux系统下的标准编辑器,几乎适用于Unix.Linux系统的所有版本.vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理.服务器管理字符界面中,永远不是图形界面的编辑器能比的.它能轻易地创建和修改文本文件,维护Linux系统中的配置文件.学会它,你就拥有了打开Linux大门的钥匙. 主要内容: vi编辑器的三种工作模式命令模式的

Linux之文本搜索工具grep

grep功能:根据模式搜索文本,并将符合模式的文本行显示出来 PATTERN:模式,即文本字符和正则表达式的元字符组合而成的匹配条件 1 通配符: *:任意长度的任意字符 ?:任意单个字符 []:匹配指定范围内的任意单个字符 [^]:与[]相反 2 正则表达式: 元字符: .:匹配任意单个字符 *:匹配次数(工作在贪婪模式下,尽可能长的匹配), 匹配其前面的字符任意个 .*:任意长度的任意字符 \?:匹配其前面的字符1次或0次 \{m,n\}:匹配其前面的字符至少m次,至多n次 \{1,\}:匹

文本处理工具之一grep命令详解

grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep.fgrep是fast grep,不支持元字符,但是搜索速度更快.

linux grep命令详解

linux grep命令详解 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟gr

正则表达式和文本搜索工具grep

正则表达式是由字面文本和具有特殊意义的符号组成的.我们可以根据具体需求,使用它们构造出合适的正则表达式来匹配文本.它是一种匹配文本的通用语言.正则表达式是模式匹配技术的核心,借助合适的正则表达式,可以生成我们所需的各类输出结果,例如过滤.剥离.替换.搜索等. 正则表达式的基本组成部分 ^ #行起始标记(使用cat -a显示空格,行首,行尾等标记.) #示例 ^It 匹配以It起始的行 $ #行尾标记 #示例 It$ 匹配以It结尾的行 . #匹配任意一个字符 #示例:Hack.匹配Hackl和H

grep命令详解

grep命令是linux下的行过滤工具,其参数繁多,下面就一一介绍个个参数的作用,希望对大家有所帮助.grep -- print lines matching a pattern (将符合样式的该行列出)◎语法: grep [options] PATTERN [FILE...] grep用以在file内文中比对相对应的部分,或是当没有指定档案时, 由标准输入中去比对. 在预设的情况下,grep会将符合样式的那一行列出.此外,还有两个程序是grep的变化型,egrep及fgrep. 其中egrep

grep 命令详解及相关事例

一.匹配字符 .    匹配任意单个字符 [ ]  匹配指定范围内的任意字符 [^]  匹配飞指定范围内的任意字符 [:alpha:] 字母字符 [:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:] 数字 [:alnum:] 字母数字字符 [:space:] 空白字符(禁止打印),如回车符.换行符.竖直制表符和换页符 [:punct:] 标点字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 使用时一般使用两个中括号,具体会在下面的例