grep2

  rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">

GREP规则表达式特殊字符,其实和其他表达式的字符形式差不多。

^  行起始固定点,就是匹配行起始为该样式的行  要用/  / 来包括,例如/^hello/,就是匹配以hello开头的行

$  行结尾固定点  ^一样的用法,就是位置不同

.   匹配一个字符  同样要用/  /  来包括,/he..o/匹配  中间任意两个字符

*  匹配任意多个任意字符

[]  匹配在集合中的任意一个 也是用//来包括

[^] 匹配不在集合中任的一个 同上

/<  匹配字的起始固定点  ‘/<hello’  匹配有hello开始的字

/>  匹配字的结尾固定点  ‘hello/>’  匹配有 hello结束的字,本来这两个命令在书上看是要用//来扩住的,可是怎么试都不行,结果在网上找了一下,是用’ ’扩起来的,我晕,不知道是不是和SHELL 的版本和类型有关。

/(…/) 匹配字的标记 例如/(hello/) 在书上说明是这样的,在被标记的部分做标记,并保存起来,被记为数字1,以后若要参考,用/1来重复这个样式。能够使用到9个标记,第一个标记是由样式的最左边开始算起。例如,样式hello被保存在缓存且以后用/1来参考。

其实这个鸟命令我没看懂。他说是保存在缓存里,是不是字SHELL结束缓存就没有了?还是一直保存在内存中,直到父SHELL结束?还是怎么样?

我调用了

#the file is

#hello

#HELLO hello

#hello world

Grep /(hello/) myfile  hello 应该用/1标记,也就是说用/1也可以匹配hello

但是我再调用

Grep /1 myfile 结果SHELL没鸟我,没什么结果。。。。。。。这个问题非常严重,过后再弄下.

x/{m/}  重复x字符m ,要用  扩起来注意,匹配的是连续的!    例如o/{5/}就是重复o5次的意思。 

x/{m,/}   和上面的意思差不多,唯一的不同就是匹配至少m次。

x/{m,n/}  用法同上,不同点就是匹配x字符至少m次但是不超过n次。

grep中使用pipe

比如说 

我由一下文件  

myfile

yourfile

hisfile

herfile

$ls –l | grep ‘myfile’

则输入myfile 对应的信息

也就是将前半段输入的结果由管道送给grep,再对myfile进行查找

但是,对于文件内部查找的结果由管道送给grep再查找貌似不行

加入

Myfile 文件中如下

hello

hello world

HELLO WORLD

Hello World

 

$grep ‘hello’ myfile | grep ‘world’

意图是用grep查找由hello的行,再将输入由管道送给下一个grep处理,再在输入的匹配的行中查找有world匹配的行

理想的结果是

hello world

但是经过试验,输出的结果是

world

hello world

这个是为什么呢??我也不知道·········有待解决

 

grep 选项(并非所有的UNIX版本都支持相同的选项)

-n 选项  在被找到样式的每一行加上行号,不用多说,就是加数字在匹配行前面,但是要注意,加的数字不是顺序123456……而是根据匹配行所在文件的实际行来加

比如

grep –n ‘hello’ myfile

输出假设是

1 hello

5 hello world

说明hello hello worldmyfile分别是15

-i 选项 忽略大小写,没必要废话吧

-vin 选项 打印出所有不包含样式的行,而该样式忽略大小写,也就是说,比如

grep –vin ‘ab’ myfile

也就是 Ab aB ab AB 都将不被打印

-l 选项 只打印出被找到样式的文件名,而不打印出所在的行,也不用多说,在哪个文件就打印哪个文件。

-c选项 打印出有几行出现所查找的样式。注意,是打印出有几行匹配该样式,而不是有多少个该样式。

例如:
grep –c ‘hello’ *

输出结果是

myfile1:2

myfile2:5

myfile3:7

myfile4:0

意思是:在myfile1 myfile2 myfile3 中分别有257行匹配hello,而myfile4没有匹配的,注意,如果没有匹配的也会被打印出来,只是后面数字是0,表示没有匹配。

-w 选项 匹配整个字的样式

例如

grep –w  ‘hello’ myfile

则只会打印出匹配 hello 的行,而不会打印出hello111,hello2222 helloworld….之类的行

在书中看到这样一个选项

grep –vi

不知道干什么的·····················································

大概学到的grep就是这些,也有很多不理解的地方和很多没有看到的地方,有机会的话再看看吧。

我觉得最值得注意的是,每个命令都应该确切知道是干什么的,比如grep就是查找匹配样式并打印出该行。

针对我自己来说,可能是学的不太上心,看到后面,前面的好多都忘记了,用法忘记也就算了,选项含义忘记也算了,最恶劣的是竟然有些命令是用来干什么的也忘记了。这也是促使我回头来复习的原因,就当吸取教训了,以后要注意。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值