注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

仰望天空

记得常常仰望天空,记住仰望天空的时候也看看脚下

 
 
 

日志

 
 

Perl 小结  

2011-05-26 20:26:12|  分类: 学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. 获取目录下的所有文件,两种方法:

    方法一,my $path="/aa/bb/*"; my @files=glob($path); 抓取$path下的所有文件,包含路径。

    方法二, 

1 #! /usr/bin/perl -w
      2 use strict;
      3
      4 my $path="/aa/bb/cc";//抓取cc目录下的文件
      5 opendir(TEMPDIR,$path) or die "can't open it:$!";
      6 my @dir=readdir TEMPDIR;
      7 print join "\n", @dir;
      8 close TEMPDIR;
      或者my @dir=grep -d, readdir TEMPDIR; ## -d表示选出目录文件,还可以换成其他表达式。opendir读取的仅仅是目录和文件名,不包含路径。当然,从路径获取文件名或目录,也有方法,比如,basename /bin/tux,将返回tux,basename命令是返回不包含路径的文件名,而dirname /bin/tux 则是返回/bin,即返回文件所在路径。

2. 正则表达式匹配,简单记一些用过的

if($dd=~/ERR/); 如果$dd包含ERR。

$length=($_=~/[ATGC]/ig);获取匹配次数,大小写无关

给定字符,判断字符串是否包含这几个字符以外的其他字符,$str=~/^[ATGCN]+$/i ,不区分大小写。注意^和$不能少,否则达不到测试只包含的目的。

$str=~/\./ 记住点(.) 需要转义

$str=~ s/\A\s+|\s+\z//g; 去掉字符串中的空白符,通常是末尾。

3.open IN,"gzip -dc $dd | " or die $!; 打开gz格式的文件

4.my $line=`wl $dd`; 得到wl统计文件dd的行数,注意是Esc键下面的~键的底下字符。或者是用system调用shell命令。

5.my @data=split(/\t/,$_); 用\t分割字符串$_存入数组@data

6.my $dfile=">>/aa/bb/cc.txt";open OUT,$dfile;syswrite(OUT,$_); 追加写文件>>, 覆盖写用>

7.if(-f $dfile){$count=`du $dfile`;}  如果$dfile存在,则查看它的大小

9.gzip -dc filename.gz > ./aa/bb;解压到指定目录

   gzip -c filename > filename.gz 压缩并保留源文件

   gunzip -c filename.gz > filename 解压并保留源文件

解压缩汇总:

01-.tar格式
解包:[*******]$ tar xvf FileName.tar
打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)

02-.gz格式
解压1:[*******]$ gunzip FileName.gz
解压2:[*******]$ gzip -d FileName.gz
压 缩:[*******]$ gzip FileName

03-.tar.gz格式
解压:[*******]$ tar zxvf FileName.tar.gz
压缩:[*******]$ tar zcvf FileName.tar.gz DirName

04-.bz2格式
解压1:[*******]$ bzip2 -d FileName.bz2
解压2:[*******]$ bunzip2 FileName.bz2
压 缩: [*******]$ bzip2 -z FileName

05-.tar.bz2格式
解压:[*******]$ tar jxvf FileName.tar.bz2
压缩:[*******]$ tar jcvf FileName.tar.bz2 DirName

06-.bz格式
解压1:[*******]$ bzip2 -d FileName.bz
解压2:[*******]$ bunzip2 FileName.bz

07-.tar.bz格式
解压:[*******]$ tar jxvf FileName.tar.bz

08-.Z格式
解压:[*******]$ uncompress FileName.Z
压缩:[*******]$ compress FileName

09-.tar.Z格式
解压:[*******]$ tar Zxvf FileName.tar.Z
压缩:[*******]$ tar Zcvf FileName.tar.Z DirName

10-.tgz格式
解压:[*******]$ tar zxvf FileName.tgz

11-.tar.tgz格式
解压:[*******]$ tar zxvf FileName.tar.tgz
压缩:[*******]$ tar zcvf FileName.tar.tgz FileName

12-.zip格式
解压:[*******]$ unzip FileName.zip
压缩:[*******]$ zip FileName.zip DirName

13-.lha格式
解压:[*******]$ lha -e FileName.lha
压缩:[*******]$ lha -a FileName.lha FileName

14-.rar格式
解压:[*******]$ rar a FileName.rar
压缩:[*******]$ rar e FileName.rar    

10. 查看某目录下文件的个数,注意灵活多变,用管道。

      ls -l | grep "^_" | wc -l  在当前目录下查看以_开头的文件个数

      或者 find company -type f | wc -l

11. 将某个目录下占用空间为0的文件的文件名输出
      du ./filter_reads/* > aa

       awk < aa '{if($1<=0) print $0}' 这里$1表示第一列,$0会输出整一行 

13. 记录下今天完整的,带有子函数的

      1 #! /usr/bin/perl -w
      2 use strict;
      3
      4 my $path="/aa/bb/cc//dd/ee/*";
      5 my @files=glob $path;
      6
      7 my $tag=0;
      8 my @lines;
      9 foreach(@files)
     10 {
     11         if($tag == 0)
     12         {
     13                 @lines=();
     14                 push(@lines,$_);
     15                 $tag=1;
     16         }
     17         elsif($tag == 1)
     18         {
     19                 push(@lines,$_);
     20                 $tag=0;
     21
     22 #               print "lines[0]=$lines[0]\nlines[1]=$lines[1]\n";
     23
     24                 my $n=&filter_detail($lines[0],$lines[1]);
     25 #               if($n==1)last;
     26
     27 #               my $test=&filter_detail("/aa/bb/cc//dd/ee/1.fa","aa/bb/cc//dd/ee/2.fa)

     28
     29 #                last;
     30         }
     31 }
     32
     33 sub filter_detail
     34 {
     35         open(IN1,$_[0]);
     36         open(IN2,$_[1]);
     37
     38         print $_[0]."\n";
     39         print $_[1]."\n";
     40
     41         my $file1="f_".`basename $_[0]`;
     42         my $file2="f_".`basename $_[1]`;
     43
     44         open OUT1,">>$file1";
     45         open OUT2,">>$file2";
                

                  my $tmp1;#=<IN1>;
     48         my $tmp2;#=<IN2>;
     49         while(($tmp1=<IN1>) && ($tmp2=<IN2>))
     50         {
     51 #               print "tmp1=$tmp1\n";
     52                 my @l1=();
     53                 push(@l1,$tmp1);
     54                 push(@l1,scalar<IN1>)for(1..1);
     55
     56                 my @l2=();
     57                 push(@l2,$tmp2);
     58                 push(@l2,scalar<IN2>)for(1..1);
     59
     60                 my $c1=&chek_ployA($l1[1]);
     61                 my $c2=&chek_ployA($l2[1]);
     62
     63                 if($c1 == 0 && $c2 ==0)
     64 #               if(($l1[1]=~/^(A)(\1)+$/) && ($l2[1]=~/^(A)(\1)+$/) && ($l1[1]=~/^[A]+$/) && ($l2[1]=~/^[A]+$/))
     65 #               if((substr($l1[1], 0, 1) x length($l1[1]) eq $l1[1]) && (substr($l2[1], 0, 1) x length($l2[1]) eq $l2[1]))
     66                 {
     67 #                       print $tmp1."\t".$tmp2."\n";
     68 #                       print $_[0]."\t".$_[1]."\n";
     69
     70                         print $l1[0].$l1[1]."\n";
     71                         print $l2[0].$l2[1]."\n";
     72                         next;
     73                 }
     74
     75 #               print $l1[0].$l1[1];
     76 #               print $l2[0].$l2[1];
     77                 else
     78                 {
     79                         syswrite(OUT1,$l1[0].$l1[1]);
     80                         syswrite(OUT2,$l2[0].$l2[1]);
     81                 }
     82
     83 #               $tmp1=<IN1>;
     84 #               $tmp2=<IN2>;
     85         }
     86         close IN1;
     87         close IN2;
     88
     89         close OUT1;
     90         close OUT2;
     91 }
     92
     93 sub chek_ployA
     94 {
     95         my $string=$_[0];
     96         $string=~ s/\A\s+|\s+\z//g;
     97 #       print "string=$string\n";
     98
     99         my @d1=split //,$string;
    100         my $i=0;
    101         my $flag=0;
    102         foreach(@d1)
    103         {
    104                 if($d1[0] ne 'A')
    105                 {
    106                         $flag=1;
    107                         last;
    108                 }
    109                 if($i>0 && $d1[$i] ne $d1[0])
    110                 {
    111                         $flag++;
    112                 }
    113                 $i++;
    114         }
    115         $flag;
    116 #       print "flag=$flag\n";
    117 }


      163博客的格式很不好调,啥时候能够像嵌入了word一样???

记住,以后上班时间,决不能做其他与工作无关的事情,不小心被抓到就惨了。

  评论这张
 
阅读(82)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018