王朝网络
分享
 
 
 

话说小工具GREP

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

话说小工具GREP

不知是哪一天,我也记不起了,GREP遇上了我,不对应该说是我发现了它,它是一个c++Builder自带命令行小工具,这看似一个本起眼的小程序,但可能关键的时候它却能给你带来极大的方便,我就有过一段这样的经历,是这样的,我当时正在做一个关于桌面主题的程序,用到了OCR_NORMAL这个鼠标参数,本来我想改变一下我的样式以显示我这个程序的风采,哪晓得天公不作美一编译就出现了”Undefined symbol 'OCR_NORMAL'符号未错误,这个错误本身很简单,只要找到定义它的头文件就Over了,但如何才能在在VCL这众多的头文件声明中找到它的定义呢!这可能是一件多么庞大的工程啊,但Grep的出现,情况发生了很大的变化,借助于Grep的帮忙,很快地就解决这个问题。

编译错误如下:

[C++ Error] Unit1.h(47): E2451 Undefined symbol 'OCR_NORMAL'

解决办法:

D:\Program Files\Borland\CBuilder6\Include> grep OCR_NORMAL *.h

File winuser.h:

#define OCR_NORMAL 32512

#define OCR_ICON 32641 /* OBSOLETE: use OCR_NORMAL */

哦,原来“OCR_NORMAL”是在winuser.h头文件里的一个宏定义,接下来,我想你也知道该如何解决了吧!其实,当出现[C++ Error] Unit1.h(47): E2451 Undefined symbol 'OCR_NORMAL'类似的错误时,只要按一下”F1”就会出现grep的身影,只是你注没有注意到罢了,下面就是我的一次(按下F1)的结果:

Possible Causes

Actual declaration of identifier has been commented out.

Misspelling, either at this point or at the declaration.

An error in the declaration of the identifier.

The header file in which the identifier is declared was not included using #include

Tools to help track down the problem:

GREP

好了,话不多说,还是让我们回到Grep的主题上来,我打算从以下四个方面来介绍Grep:

1: Grep的语法结构

2: 常用的Command-line Options

3: 字符或字符串模式匹配

4: Example的剖析

Grep的语法:

grep [-options] searchstring [file(s) ... ]

提示:如果Grep的结果很长,你可以使用|more进行分屏显示,也可以将其重定向到文件中进行分析。

分屏显示:grep “cin” *.h |more

重定向到文件:grep “cin” *.h >readme.txt

常用的Command-line Options:

-c 只显示搜索字符串所在文件的行数,当然肯定要列出搜索字符串所在文件的文件名

-d 它决定是否搜索子目录,默认不会设置该属性

-I 忽略字符的大小写,如:”Sub”与”SUb”等价

-l 只显示搜索字符串所在文件的文件名

其它的属性如:-u,-v,-z等你可以参考在线帮助。

字符或字符串模式匹配

字符或字符串模式匹配简单地说就是你如何设置字符或字符串的匹配方式以使你能尽快地得到结果。其实,它主要涉及到一些特殊字符的处理。比如:空格与Tab一般被当着命令参数的分隔符,但有时要匹配的字符串它本身由包含空格或Tab,这时你如何处理,明智的做法是将要匹配的字符用引号栝起来,这就是字符或字符串的匹配方式。那些特殊的符号主要包括在下表中:

* 匹配任意的字符或字符串,可以为空

+ 与*差不多,但不可以为空,如:hell+与hell就不匹配,hell*与hell是匹配的

[ ] 匹配[ ]中的任何一个,如:he[mpl]与hem,hep,hel都匹配,与hello不匹配

[^] 与[ ]恰好相反,它与除了[ ]中的其它字符匹配, he[mpl]与hem,hep,hel不匹配,与hex匹配

[-] 用来表示一个集合,如[0-9]中的任何一个匹配

\ 使\ 它后面的一个字符转义 ,如:*本来表示通配符,但用在它的后面就只表示一个普通的”*”字符

Example的剖析:

grep -i [a-c]:\\data\.fil *.c *.inc

参数-i会忽略大小写,[a-c]表示字符a到c中的任何一个就可以与其匹配,\\转义的结果是”\”所以以下都是[a-c]:\\data\.fi可匹配的字符串:

a:\daDa.fil

c:\Data.Fil

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有