软实力提升之道11------全面搜索正则表达式并把行打印出来
来源:互联网 发布:视频调色软件 编辑:程序博客网 时间:2024/04/30 01:51
软实力提升之道11------全面搜索正则表达式并把行打印出来
嗯,当你看到这样一个标题时有什么想法?一头雾水还是心中暗爽"幸亏我知道"。不管怎么样,这是软实力提升之道的又一篇文章,最近总觉得自己写的东西很浅显,很容易被高手鄙视,算了,罢了,本来就是小白,还是和需要的人一起提升软实力吧。
Global search Regular Expression and Print out the line,就是我们常说的GREP,也就是上面的那个标题。这个东东是个强大的文本搜索工具。在Linux和UNIX中广泛使用。
如果要说grep就要提一下它的兄弟:egrep、fgrep。grep和后面的程序基本相同,通过-E或者-E来调用后面的两个命令。
在古老的UNIX文本编辑器ED(这玩意儿诞生的时候中国的文化大革命还没高潮)中有个命令:
:g/re/p
这个命令的作用是通过搜索整个文件匹配给定正则表达式,并且把相应的行打印出来。ED是最早支持正则表达式的文本工具之一。它的作者ken. Thompson根据UC BERKLY的QED的思路发展而来。ED在文本编辑领域的影响力如此之大,它的后裔中vi,并影响了AWK和PERL的诞生。
基本原理
grep的工作过程一般分三步:
- 1. 将一行文本读入模式空间
- 2. 对模式空间中的文本进行正则表达是处理
- 3. 针对匹配结果进行处理
grep的语法格式如下
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
如果我们想在fruit文件中搜索包含apple字符串的行。grep如下命令:
grep apple fruit
如果我们还想匹配Apple或者aPPle其它,就需要用到-i,表示ignore-case的意思,就是忽略大小写。
[root@vv grept]# cat fruit
applet
Applet
banana
Orange
Strawberry
[root@vv grept]# grep apple fruit
applet
[root@vv grept]# grep -i apple fruit
applet
Applet
正则表达式元字符集包括基本集和扩展集。grep支持的是基本集。前面提到过的egrep支持扩展集。
元字符
说明
^
行首定位,指定行的头部。'^apple'匹配所有以apple开头的字符串
$
行尾定位,指定行的尾部。'apple$'匹配所有以apple结尾的字符串
.
匹配任意一个字符。'app.e'匹配apple、appoe或者其它。
*
匹配0个或者多个前导字符。学过闭包的应该知道。
[]
匹配[]中任意一个字符,'app[lo]e'会匹配apple或者appoe。
[^]
[]元字符相反
/< >/
词首定位和词首定位符,注意和^$的区别。下面有实例说明。
x/{m, n/}
m代表前导字符数量的下限,n代表下限
行首定位和词首定位的区别:
[root@vv grept]# cat fruit
applet
Applet
banana
Orange
Strawberry
aaaa pple
pple
[root@vv grept]# grep '^pple' fruit
pple
[root@vv grept]# grep '/<pple' fruit
aaaa pple
pple
[root@vv grept]#
这篇的重点在grep,所以正则表达式的内容就不多介绍了。
-#
同时显示匹配行的上下#行
[root@vv grept]# cat fruit
applet
Applet
banana
Orange
Strawberry
aaaa pple
pple
[root@vv grept]# grep -2 'banana' fruit
applet
Applet
banana
Orange
Strawberry
-l
grep匹配时,只打印匹配的文件名,不打印其中的行。
[root@vv grept]# grep -l 'banana' *
fruit
grep另外一个使用比较广泛的地方是用在管道中。比如显示某一进程。假设我们要显示vi进程的运行情况。
[root@vv grept]# ps aux | grep "vi"
root 29649 0.4 0.1 5228 1444 pts/1 T 20:22 0:00 vi
root 29693 0.0 0.0 4212 728 pts/1 S+ 20:23 0:00 grep vi
grep在shell中的使用也很广泛。在shell中我们比较注意的就是grep的退出状态。通过下面的实例,就可以看到grep对退出状态有哪几种了。
[root@vv grept]# grep 'apple' fruit
applet
[root@vv grept]# echo $?
0
[root@vv grept]# grep 'applebbb' fruit
[root@vv grept]# echo $?
1
[root@vv grept]# grep 'applebbb' fruit2
grep: fruit2: No such file or directory
[root@vv grept]# echo $?
2
- 软实力提升之道11------全面搜索正则表达式并把行打印出来
- Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来
- linux grep命令 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Express
- 软实力提升之道10 ------ RPC程序入门
- 字符数组的使用-读入一文本行,并把最长的文本行打印出来。
- 读入一组文本行,并把最长的文本行打印出来
- 正则表达式之非打印字符
- vs2013 搜索之正则表达式使用
- 技术人员也要注重提升软实力
- 中国企业应提升哪些“软实力”?
- 正则表达式之正向预搜索、反向预搜索
- 打印/正则表达式
- 正则表达式之道
- 正则表达式之道
- 正则表达式之道
- 正则表达式之道
- 正则表达式之道
- 正则表达式之道
- 日语报名没报上,不怨我!是报名网站不好,Servlet没有禁止缓存...Servlet技术相关
- 了解自己
- 怎样加分啊?
- 图片横向滚动js代码
- 2009-03-29技术学习:wicket控件RadioChoice,ropDownChoice用法
- 软实力提升之道11------全面搜索正则表达式并把行打印出来
- 计算表达式 --堆栈
- 容易读错的常见常用字
- 杯子碎了---好可惜哦
- js文件中获取服务端控件的问题
- MJ评《贫民窟的百万富翁》-满分10分
- sqlite3的基本使用
- 地区分类列表
- Timeshift Blog被主流媒体报道了 谢谢大家对本开源的支持。我的天呀。