LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1281|回复: 5

自动化下载hlfs_uclibc的current版本的所有包和补丁(刚学了点perl,卖弄一下)

[复制链接]
发表于 2006-1-22 17:12:47 | 显示全部楼层 |阅读模式
申明一点:
以下代码我是在win32环境下用的,linux下还没有测试过。
代码用到的wget,cat等来自gnuwin32项目。


以下是主脚本:

  1. wget http://www.linuxfromscratch.org/hlfs/view/unstable/uclibc/chapter04/patches.html
  2. wget http://www.linuxfromscratch.org/hlfs/view/unstable/uclibc/chapter04/packages.html

  3. cat patches.html packages.html > uclibc.htm

  4. perl fio3.pl

  5. wget -N -i uclibc_down_list.txt

  6. rm -v patches.html packages.html uclibc.htm
复制代码


下面是fio3.pl有代码:

  1. open FILE, "uclibc.htm" or die "the file not exists";  
  2. open FILE2, ">uclibc_down_list.txt" or die "the output file not exists!";

  3. while(<FILE>){
  4.    if(/ftp|http/){
  5.         @new_line = split(/"/, $_);
  6.         if($new_line[1] =~ /^ftp|^http/ && $new_line[1] =~ /gz$|bz2$|patch$/){
  7.                 print FILE2 $new_line[1]."\n";       
  8.         }
  9.    }
  10. }
  11. close FILE;
  12. close FILE2;

复制代码
 楼主| 发表于 2006-2-2 19:20:42 | 显示全部楼层

初步领会了perl的一点,对fio3.pl作了改进


  1. open (FILE, "uclibc.htm") or die "the chapter of packages and patches ready?";
  2. open (FILE2, ">lnks_uclibc.txt") or die "the output file ready?";

  3. map { print FILE2 $_."\n" }
  4. grep { /^(http|ftp).*(bz2|gz|patch)$/ }
  5. map { (split /"/)[1] }
  6. grep { /http|ftp/ } <FILE>;


  7. close FILE;
  8. close FILE2;
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-2-2 19:43:05 | 显示全部楼层
新的版本,真不错。一下子还真没看懂。进度没兄弟的快。:)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-2 20:07:49 | 显示全部楼层

最近一直在看正则表达式,因为我的工作要做好多的报表。当然,还没有变态到JAPH的地步


  1. open (FILE, "uclibc.htm") or die "the chapter of packages and patches ready?";
  2. open (FILE2, ">lnks_uclibc.txt") or die "the output file ready?";

  3. print FILE2 grep { s/.*"((http|ftp):.*(bz2|gz|patch))".*/$1/ } <FILE>;

  4. close FILE;
  5. close FILE2;
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-3 17:51:40 | 显示全部楼层

还有个map版本


  1. print FILE2 map { /"((http|ftp):.*(bz2|gz|patch))".*(\n)/ and $1.$4 } <FILE>;
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-2-3 21:08:44 | 显示全部楼层
不错,不过别简化的以后自己看不明白就可以了:)。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表