`
xfxlch
  • 浏览: 162639 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hack 8. Regular Expression in Grep

阅读更多
grep 命令中表达式的应用。正则表达式在我们编程语言和linux系统中得到了很广泛的应用,利用表达式可以更快更方便的去查找信息。

表达式1:^标记,^标记用于查找以该标记后面的文本为开始的行。例如:grep ^this * 就是说查找改目录下所有文件中以this为开头的行。

jack@Ubuntu:~/demo$ cat message.1
this is a test
this is a demo
i love you
ihateyou
jack@Ubuntu:~/demo$ cat message.2
have a good day
this girl is my gf
that is not my love
jack@Ubuntu:~/demo$ grep "^this" *
message.1:this is a test
message.1:this is a demo
message.2:this girl is my gf


加上 -c 参数就是统计包含该文本的数量了

jack@Ubuntu:~/demo$ grep -c "^this" *
dirH:0
Hi.class:0
Hi.java:0
luch.txt:0
message.1:2
message.2:1


表达式2:$标记.该标记与^标记正好相反。旨在查找以该标记结尾的行。例如:grep "you$" message.1 是说查找message.1文件中以“you”结尾的行。

jack@Ubuntu:~/demo$ grep "you$" message.1
i love you
ihateyou



表达式3:整合^$标记.单纯把^$放在一起是查找空行。

jack@Ubuntu:~/demo$ cat message.3
this is for test empty line

one empty line above


two empty lines above.
jack@Ubuntu:~/demo$ grep "^$" message.3



jack@Ubuntu:~/demo$ grep -c "^$" messag*
message.1:0
message.2:0
message.3:3



表达式4:单点.标记。单点标记用来匹配含有其中任意字符的行。例如:grep “i.love” * 就是匹配含有i和love的行,但是不匹配ilove。
jack@Ubuntu:~/demo$ cat message.1
this is a test
this is a demo
i love you
iloveyou
ihateyou
jack@Ubuntu:~/demo$ grep "i.love" message*
message.1:i love you


如果你是想匹配某个单词的话,加-w 参数。例如:
jack@Ubuntu:~/demo$ grep -w "you" message*
message.1:i love you


表达式5:*标记,该标记用于匹配零个或多个前面的关键字的行。
jack@Ubuntu:~/demo$ cat message.4
gle
google
gogle


jack@Ubuntu:~/demo$ grep "go*gle" message.4
google
gogle
jack@Ubuntu:~/demo$ grep "*gle" message.4
jack@Ubuntu:~/demo$ grep "g*gle" message.4
gle
google
gogle


这里情况有点特殊,对于0个的情况没有能查询欻里。但是用g*gle却能查询出来不是很了解具体的情况。我的系统是
Linux version 3.5.0-52-generic (buildd@klock) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #78~precise1-Ubuntu SMP Wed Jun 11 17:14:53 UTC 2014
请高人指点

--EOF--

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics