亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1455 | 回復(fù): 1
打印 上一主題 下一主題

在"大海里撈針"的perl腳本。 [復(fù)制鏈接]

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-02-10 21:16 |只看該作者 |倒序?yàn)g覽
論壇里有網(wǎng)友問在一個(gè)有非常多很大文件的目錄中搜索的問題,顯然這時(shí)我們最關(guān)心的是性能的。你可能會(huì)說最好用C來做,不過在好的算法下shell的性能也許能夠滿足要求。這里我們假定我們要查找的東西只會(huì)出現(xiàn)一次。那么:
1.我們的程序應(yīng)該在找到匹配后放棄搜索其它文件;
2.由于文件的行數(shù)也很大,所以程序在找到匹配后退出當(dāng)前文件的搜索。
如果直接用shell來做,可能會(huì)碰到命令行長度或參數(shù)數(shù)目的限制問題,如果用xargs重新裝配命令行,也有些很難處理的麻煩。所以索性用perl寫了一個(gè),請(qǐng)大家指正:
  1. #!/usr/bin/perl
  2. die "usage: $0 path pattern\n" unless @ARGV == 2;
  3. ($path, $pattern)=@ARGV;
  4. $, = " ";
  5. print $path;
  6. opendir(DH, $path) or die "cannot open dir!";
  7. while($file = readdir(DH)) {
  8.     next if (!open(FH, "./".$file));
  9.     while(<FH>) {
  10.         print $file, $1 if (m/($pattern)/);
  11.         if ($1) {
  12.             printf STDERR "found in %s line %d!\nexiting...\n", $file, $.;
  13.             exit 0;        # change this to "next;" (no ") if you want to find in other files
  14.         }
  15.     }
  16.     close(FH);
  17. }
  18. closedir(DH);
  19. print STDERR "not found.";
  20. exit 1
復(fù)制代碼


討論:
1.如果要查找的東西不止會(huì)出現(xiàn)一次,但在每個(gè)文件中不會(huì)出現(xiàn)多次,那我們就得在其它文件中繼續(xù)搜索?梢詫⑸厦婺_本中帶注釋的一行改為:
  1. next;
復(fù)制代碼

2.如果在每個(gè)文件中也可能重復(fù)出現(xiàn),那就沒辦法取巧了,只好將帶注釋的一行刪掉。你最好去用C寫個(gè)程序,或者找到其它特征在算法上提高查找的速度。

[ 本帖最后由 woodie 于 2006-2-10 21:20 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2006-02-10 21:35 |只看該作者
原帖由 woodie 于 2006-2-10 21:16 發(fā)表
論壇里有網(wǎng)友問在一個(gè)有非常多很大文件的目錄中搜索的問題,顯然這時(shí)我們最關(guān)心的是性能的。你可能會(huì)說最好用C來做,不過在好的算法下shell的性能也許能夠滿足要求。這里我們假定我們要查找的東西只會(huì)出現(xiàn)一次。那 ...

哇...精品,精品
收藏
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP