博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助
  dorainm.cublog.cn

关于作者
dorainm
dorainm@gmail.com

我的梦想是当一名地主家的少爷,家有良田千顷,终日不学无术,没事领着一帮狗和奴才去调戏一下良家少女……

格物、致知、正心、诚意、修身、齐家、治国、平天下

电影的长度取决于观众的那泡尿能憋多久
|| << >> ||
我的分类


findstring 文本文件中搜索字符串
    需要一个能检索文件内容的小程序, 对perl不太熟悉,最近要操作查阅众多源码众多配置文件, 有时候很想检索这些文本文件中某个字符串, 内容搜索的. 以前用 find -type f -exec cat {} \; 再加管道(pipe)再 grep -n xxx, 但是现在没法满足了(dorainm对find命令也不甚精通), 只好自己写个 shell 来做吧!

看下程序:

$ findstring
findstring, by dorainm, dorainm@gmail.com
usage: findstring keystring [-r] [path]
$


参数:
    keystring   就是要检索的关键字字符串
    -r          选择参数, 添加了-r意思是递归检索, 否则是检索当前目录下的文件
    path        选择参数, 指定目录, 否则就检索当前目录

下面看看实现的程序代码!

if( $ARGV[1] eq "-r" )
{
    @files = `find $ARGV[2] -type f`;
}
else
{
    @files = `find $ARGV[1] -maxdepth 1`;
}


find
    检索目录文件,首选还是 find, find [PATH] -type f [-name *] 能列出指定目录及子目录下的所有文件, 加上 -maxdepth=1 可以设置递归深度,比如 1 的时候,就是不检索子目录了 :)


sub check_text_file()
{
    local $result = `file $_[0]`;

    if( $result =~ m/text/ )
    {
    return 1;
    }
    else
    {
    return 0;
    }
}


file
    判断文件类型的利器! GNU/Linux没有扩展名之说,我们检索文件内容中的一条字符串,肯定不能 cat 一个二进制文件!


sub search_string_in_file()
{
    local $result;
    local @results = `cat $_[0] | grep -n $_[1]`;
    foreach $result ( @results )
    {
    chomp $result;
    printf "$_[0]:$result\n";
    }

    return;
}


grep
    索引出所有文本文件后, 现在开始读取, 想到的就是grep, grep -n 参数能够显示相应行号

运行相应效果

$ findstring WIN
./#.c:5:#define WIN -1
./#.c:6:#define UNWIN 0
./#.c:209:     return WIN;
./#.c:212:    return UNWIN;
./#.c:237:        if(chkWin() == WIN) break;

$ findstring WIN -r
./jin/jin.c:18:#define WINNER    -1
./jin/jin.c:255:                chess_value[i]=WINNER;
./#.c:5:#define WIN -1
./#.c:6:#define UNWIN 0
./#.c:209:     return WIN;
./#.c:212:    return UNWIN;
./#.c:237:        if(chkWin() == WIN) break;

$ findstring WIN -r ./jin/
./jin/jin.c:18:#define WINNER    -1
./jin/jin.c:255:                chess_value[i]=WINNER;

$



    利用不同的程序不同的功能, 拼凑, 终于完成了需要的效果, perl 写的不好, 见笑 :)

完整程序下载:
文件:findstring.tar.gz
大小:0KB
下载:下载
 

 TAG findstring 内容搜索 字符串
发表于: 2007-11-11,修改于: 2007-11-11 18:08,已浏览783次,有评论0条 推荐 投诉


网友评论
 发表评论