shell中的文本处理工具之grep

13 篇文章 0 订阅

1、grep

1.1 基本介绍

grep (Globally search a Regular Expression and Print)一种强大的文本搜索工具,能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。

egrep和fgrep的命令只跟grep有很小不同。egrep和fgrep均为grep的扩展,支持更多的re元字符,fgrep就是fixed、grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。并且可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

1.2 工作方式

grep在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

1.3 基本用法

         格式:grep 匹配条件 处理文件

         示例:

                  grep root passwd             ##过滤出有关root的行

         参数:

参数含义示例
^以某字符开头grep ^root passwd
$以某字符结尾grep root$ passwd
-i忽略大小写grep -i root passwd
\<之前无字符grep -E  "\<root" passwd
\>之后无字符grep -E "root\>" passwd
-num显示匹配字符的前后num行grep -num
-n显示行号grep -n
-A显示匹配字符的num下行grep -A num
-B显示匹配字符的num下行grep -B num
-v逆向显示grep -v

【注】示例中的 -E 和表示 egrep 该命令的使用和后面的匹配格式有关(与正则表达式的规则相同)。

命令演示:

实验素材建立:

将/etc/passwd 分为上下两部分,并分别存储于/mnt/passwd1 和/mnt/passwd2 中;并修改passwd1的内容:

图 1 素材建立并补充

参数:

图 2 多文件匹配

 ^   $    \>    \<

图 3 参数: ^ $  \>  \<

 -i   -n

图 4 参数 -i -n

-num

图 5 参数 -num

 -A -B

图 6 参数 -A -B

 -v

图 7 参数 -v

 1.4 匹配字符个数规则

         用法:w---s         #w s 为匹配字符的首尾,----表述输入的规则;

         参数含义:

规则表示所含字符个数
.每个点表示一个占位,可有多个
*表示任意多个
0或1个
+大于等于1个
{n}n个
{n,}大于等于n个
{m,n}m到n个

{,n}

0-n个
(ee){n}有n个ee

【注】这里的规则依然和正则表达式相同,因为正则表达式较为复杂,这里将使用的列出。

命令演示:

实验素材:

       编写文件test,内容如下:

图 8 实验素材

 

参数:

.   ?    *   +

图 9 参数 . ? * +

{n} {,n}   {m,n}  { n, }  (ee){n} 

图 10 参数 {n} {,n}   {m,n}  { n, }  (ee){n}

 

参考资料:百度百科

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值