设为首页 加入收藏

TOP

Linux下Shell编程——grep命令的基本运用(一)
2014-11-24 03:32:19 来源: 作者: 【 】 浏览:2
Tags:Linux Shell 编程 grep 命令 基本 运用

grep命令

GREP是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。GREP是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

1、grep命令基本用法

grep命令是支持正则表达式的一个多用途文本搜索工具,grep的一般格式为:

grep [选项] [模式] [文件...]

grep命令由选项、模式和文件三部分组成,它在一个或多个文件中搜索满足模式的文本行,模式后的所有字符串被看做文件名,文件名可以有多个,搜索的结果被打印到屏幕,不影响原文件的内容。Grep命令的选项用于对搜索过程进行补充说明。



grep命令选项及其意义:

-c #只输出匹配行的数量

-i #搜索时忽略大小写

-h #查询多文件时不显示文件名

-l #只列出符合匹配的文件名,而不列出具体的匹配行

-n #列出所有的匹配行,并显示行号

-s #不显示不存在或无匹配文本的错误信息

-v #显示不包含匹配文本的所有行

-w #匹配整词

-x #匹配整行

-r #递归搜索,不仅搜索当前工作目录,而且搜索子目录

-q #禁止输出任何结果,以退出状态表示搜索是否成功

-b #打印匹配行距文件头部的偏移量,以字节为单位

-o #与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位

-E #支持扩展的正则表达式

-F #不支持正则表达式,按照字符串的字面意思进行匹配



grep命令的模式十分灵活,可以是字符串,也可以是变量,还可以是正则表达式。需要说明的是,无论模式是何种形式,只要模式中包含空格,就需要使用双引号将模式引起来,如果不加双引号,空格后的单词容易被误认为是文件名。大部分情况下,使用单引号将模式引起来也是可以的。

例:模式包含空格时,是否使用双引号的区别

WORDLIST文件的内容:


hello, caicai. world: watch, world caicaihello message

message world watch hello into the he shelast into.

last save hello caicai, world: message.

#搜索WORDLIST文件中包含watch字符串的行,不需要引号引起模式

执行:grep watch WORDLIST


结果:hello, caicai. world:watch, world caicai hello message

message world watch hello into the he she lastinto.

#搜索WORDLIST文件中包含hellocaicai字符串的行,不用引号将hello caicai引起来的结果

执行:grep hello caicaiWORDLIST


结果:grep: caicai: 没有那个文件或目录

#Shell将caicai解析为文件名,提示没有此文件的错误

#下面给出WORDLIST文件中包含hello字符串的行

WORDLIST:hello, caicai. world: watch, worldcaicai hello message

WORDLIST:message world watch hello into thehe she last into.

WORDLIST:last save hello caicai, world:message.

#搜索WORDLIST文件中包含hellocaicai字符串的行,用引号将hello caicai引起来的结果

执行:grep "hellocaicai" WORDLIST


结果:last save hellocaicai, world: message.



例:grep的多文件查询

FILE1文件的内容:

Shanghai Jiaotong University

University of Toronto

Beijing University

Southeast University

Victory University

FILE2文件的内容:

Shanghai

Toronto

Beijing

Nanjing

Melbourne

执行:grep Beijing FILE1FILE2

结果:FILE1:BeijingUniversity

FILE2:Beijing



例:用通配表示多文件

执行:grep Beijing FILE

结果:FILE1:BeijingUniversity

FILE2:Beijing



1、-c选项

-c选项表示输出匹配字符串行的数量,默认情况下,grep命令打印出包含模式的所有行,一旦加上-c选项,就只显示包含模式行的数量。

例:grep -c的用法

执行:grep -c Beijing FILE

结果:FILE1:1 #FILE1文件中有1行包含Beijing


FILE2:1



2、-n选项

-n选项列出所有的匹配行,并显示行号。默认情况下,grep搜索单个文件时,只显示每行的内容,搜索多个文件时,显示文件名及每行的内容,加上-n选项后,将在行内容前附加显示行号。

例:grep -n的用法

执行:grep -n Beijing FILE

结果:FILE1:3:BeijingUniversity #FILE1文件的第3行

FILE2:3:Beijing



3、-v选项

-v选项显示不包含模式的所有行。

例:grep -v的用法

执行:grep -vc BeijingFILE #同时使用-v和-c选项

结果:FILE1:4 #FILE1文件中有4行不包含Beijing字符串

FILE2:4



4、-i选项

默认情况下,grep命令对大小写是敏感的,如果加上-i选项就表示grep命令不区分大小写。



5、-h选项

-h选项表示查询多文件时不显示文件名,默认情况下,grep命令查询多个文件时,在匹配行之前显示文件名,加上-h选项后,grep命令将不再显示文件名。

例:grep -h的用法

执行:grep -h Beijing FILE

结果:Beijing University #在匹配行前不再显示文件名了

Beijing



6、-l选项

-l选项表示只列出符合匹配的文件名,而不列出具体匹配行。



例:grep -l的用法

执行:grep -l Beijing FILE

结果:FILE1 #只显示包含Beijing字符串的文件名

FILE2



7、-s选项

-s选项表示不显示不存在或无匹配文本的错误信息,默认情况下,grep在待搜索文件不存在或搜索不到符合模式的文本行时将打印错误信息。

例:grep -s的用法

执行:grep hello caicaiWORDLIST #未使用-s选项

结果:grep: caicai: 没有那个文件或目录 #打印

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下无线路由器的软件开发 下一篇新版MapReduce的API编程简单模板

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)