Just Unix基础重温之 grep、egrep、fgrep

本文属贫僧不吃肉原创,欢迎转载,转载请注明出处 http://never-say-never.iteye.com/blog/851514

 

1.相关背景

1.1 Filter(过滤器),是指一些程序,他们从标准输入读取数据,对数据进行操作,然后将产生的结果输出到标准输出。他们是非交互的,即没有提示或等待输入。

 

1.2检索过滤器:  grep fgrep egrep

      这些命令检索与targetpattern相匹配的文本,我们可以用它们从文件中提取信息、从一个命令的输出数据中检索与某一项相关的行为以及查找包含特定单词的文件。

 

1.3 区别

grep:最常用。可以检索目标(一个或多个单词或正则表达式)

fgrepfixed grep):不能使用正则表达式,可以检索多个目标,等同于grep –f

egrepextended grep):支持更丰富的正则表达式,而且支持多目标检索,他比grep快得多,等同于grep -e

 

 

 

 

2.grep基本用法

 

2.1从一个或多个文件中检索包含某个target的行,然后打印所有匹配的行。

 

先打开一个文件看一下内容

$ cat daily_log

 

just for myself

I just love u

end

 

 

在这个文件里查找包含“just”的行

$ grep just daily_log

 

just for myself

I just love u

 

2.2 grep检索含空格的短语

 

$ grep “just love” daily_log

 

I just love u

 

注意:如果justlove出现在不同的行,grep就不会匹配它们,因为grep一次只检索一行。

 

2.3当只记得关键字,不记得文件名的时候,怎么办呢?

 

$ grep just *

 

daily_log: just for myself

daily_log: I just love u

other_file: just unix

 

3.grep的一些常用通道

 

3.1 grep是区分大小写的

$ grep –i JUST daily_log    $ grep –i just daily_log  不同

说明:使用-iignore case)可以忽略字母大小写

 

3.2 grep -n列出检索目标所在的行号(line-number)

 

$ grep –n just daily_log

 

1: just for myself

2: I just love u

 

3.3 grep –l (list)不打印匹配的行,而打印包含目标的文件名

 

$ grep –l just *

 

daily_log

other_file

 

3.4 转换方向(-v,转换方向是grep挺有意思的一个实现,即和正常情况相反,grep输出未包含target的行或文件

 

$ grep –v just daily_log

 

end

 

$ grep –v end daily_log

 

just for myself

I just love u

 

 

3.5 grep –c ,统计匹配的行总数(count),不显示行信息

 

$ grep –c just daily_log

 

2

 

$ grep –c end daily_log

 

1

 

 

 

 

 

 

 

参考文献:

1. “UNIX手册之类的名字吧,在图书馆看的,忘了名字,后来也没找到书。

2.Linux常用指令速查手册》,杨艳玲,化学工业出版社

3.UNIX实用教程第五版》,Paul K. Andersen, 人民邮电出版社

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值