好多时侯,我们并不须要列举文件的全部内容,而是从文件中找到包含指定信息的这些行,要实现这个目的,可以使用grep命令

grep命令作为Linux文本处理三剑客的一员,另外两个是sed和awk,它们会在后续章节中作详尽介绍。

grep命令的来历可以溯源到UNIX诞生的初期,在UNIX系统中,搜索的模式(patterns)被称为正则表达式(regularexpressions),为了要彻底搜索一个文件,有的用户在要搜索的字符串前加上前缀global(全面的),一旦找到相匹配的内容,用户如同将其输出(print)到屏幕上,而将这一系列的操作整合到一起就是globalregularexpressionsprint,而这也就是grep命令的全称。

grep命令才能在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或短语。

正则表达式是描述一组字符串的一个模式,正则表达式的构成模仿了物理表达式,通过使用操作符将较小的表达式组合成一个新的表达式。正则表达式可以是一些纯文本文字,也可以是拿来形成模式的一些特殊字符。为了进一步定义一个搜索模式,grep命令支持如表1所示的这几种正则表达式的元字符(也就是转义)。

表1正则表达式的键值键值功能

c*

Linux grep命令使用_grep正则表达式教程_linux管道命令 grep

将匹配0个(即空白)或多个字符c(c为任一字符)。

将匹配任何一个字符,且只能是一个字符。

匹配方括弧中的任意一个字符。

匹配除方括弧中字符外的所有字符。

锁定行的开头。

锁定行的结尾。

须要注意的是,在基本正则表达式中,如键值*、+、{、|、(和)等,早已丧失了它们原先的含意,而若要恢复它们原先的含意linux site:infoq.cn,则要在之前添加反斜杠,如*、+、{、|、(和)。

grep命令是拿来在每一个文件或中(或特定输出上)搜索特定的模式,当使用grep时,包含指定字符模式的每一行内容,还会被复印(显示)到屏幕上linux管道命令 grep,并且使用grep命令并不改变文件中的内容。

Linux grep命令使用_grep正则表达式教程_linux管道命令 grep

grep命令的基本格式如下:

root@localhost~

#grep模式文件名

这儿的模式,要么是字符(串),要么是正则表达式。而此命令常用的选项以及各自的含意如表2所示。

表2grep命令常用选项及涵义选项含意

-c

仅列举文件中包含模式的行数。

-i

linux管道命令 grep_grep正则表达式教程_Linux grep命令使用

忽视模式中的字母大小写。

-l

列举带有匹配行的文件名。

-n

在每一行的最上面列举行号。

-v

列举没有匹配模式的行。

-w

Linux grep命令使用_grep正则表达式教程_linux管道命令 grep

把表达式当作一个完整的单字符来搜救,忽视这些部份匹配的行。

注意,假若是搜索多个文件,grep命令的搜索结果只显示文件中发觉匹配模式的文件名;而假如搜索单个文件,grep命令的结果将显示每一个包含匹配模式的行。

【例1】假设有一份emp.data职工清单linux认证,如今要搜索此文件,找出职位为CLERK的所有职工linux管道命令 grep,则执行命令如下:

root@localhost~

#grepCLERKemp.data

#忽视输出内容

而在此基础上,假如只想晓得职位为CLERK的职工的人数,可以使用“-c”选项,执行命令如下:

root@localhost~

#grep-cCLERKemp.data

#忽视输出内容

【例2】搜索emp.data文件,使用正则表达式找出以78开头的数据行,执行命令如下:

root@localhost~

#grep^78emp.data

#忽视输出内容

grep命令的功能十分强悍,通过借助它的不同选项以及变化万千的正则表达式,可以获取任何我们所须要的信息。本节所介绍的grep命令,只介绍了它的一部份基础知识,例如说,grep命令可用的选项还有好多,且用法也五花八门,不过对于初学者来说,本节所介绍的内容早已足以应付多数Linux系统的日常工作了。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复