话说小工具GREP

原创 2004年05月13日 12:25:00
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

话说小工具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]表示字符ac中的任何一个就可以与其匹配,//转义的结果是”/”所以以下都是[a-c]://data/.fi可匹配的字符串:

a:/daDa.fil

c:/Data.Fil

?

?

使用Alize等工具构建说话人识别平台

链接:http://iibo.net/archives/1176 使用Alize等工具构建说话人识别平台 前段时间有好几位同学询问如何用Alize实现说话人识别的问题,由于寒假前赶Pa...
  • zhangxueyang1
  • zhangxueyang1
  • 2017年01月08日 11:00
  • 1281

linux系统三大文本处理工具grep、sed及awk的简单介绍

grep、sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了。只不过,相比较而言,sed和awk功能更...
  • u011630575
  • u011630575
  • 2016年07月26日 11:25
  • 1254

linux下全目录全文搜索强大工具grep

linux下全目录全文搜索强大工具grep   如果要搜索整个linux系统里,那个文本里写了 jdk1.4.0 则以root登录,然后 执行 grep   jdk1.4.0 ...
  • LXB15959168136
  • LXB15959168136
  • 2016年08月15日 12:03
  • 5681

不会用u盘winPE里的小工具,还好意思说自己是大神!

不管是维护系统或者重装系统,我们都偏爱使用u盘pe系统盘来解决困扰,但仍然存在一些电脑小白不懂如何使用pe启动盘还进行装机维护,今天快启动小编带大家了解详细的pe启动盘中各款工具的使用方法,想要学习的...
  • jessical1020
  • jessical1020
  • 2017年06月06日 20:37
  • 332

文本查找和筛选工具(grep,find,sed)

  • 2015年12月21日 00:42
  • 2.77MB
  • 下载

Grep工具类

  • 2015年09月26日 10:25
  • 4.95MB
  • 下载

windows下的grep工具

  • 2011年06月21日 21:57
  • 79KB
  • 下载

ack.pl很好用工具,比grep还好用

  • 2010年08月07日 07:14
  • 74KB
  • 下载

ajc grep 全文搜索工具

  • 2016年02月02日 13:44
  • 1.79MB
  • 下载

写一个小工具遇到的问题记录

工具功能: 通过该工具调用rslogo.exe生成samsung.c(其内容为一个有600多K的数组),将samsung.c中的数组读取出来并以二进制的方式保存到kmt_iii.sys文件中。生成的...
  • hh675346064
  • hh675346064
  • 2013年03月02日 11:57
  • 226
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:话说小工具GREP
举报原因:
原因补充:

(最多只允许输入30个字)