Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1572505
  • 博文数量: 289
  • 博客积分: 11086
  • 博客等级: 上将
  • 技术积分: 3291
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 17:06
个人简介

徐小玉的博客。

文章分类

全部博文(289)

文章存档

2023年(6)

2022年(1)

2021年(2)

2020年(9)

2019年(9)

2018年(6)

2017年(10)

2016年(10)

2014年(3)

2013年(4)

2011年(12)

2010年(16)

2009年(14)

2008年(119)

2007年(48)

2006年(20)

我的朋友

分类: LINUX

2007-09-05 11:05:45

#! /usr/bin/perl -w
use IO::Socket;
use strict;             
if(scalar(@ARGV)!=1){    #参数个数
        exit;
}


my $len;       #每条记录的长度
my $num_log=0;                              #计算日志的行数。
my $file_size=0;    # 存放文件的大小。
my @size;   #计算数据大小的时候用到
my $file;   #存放文件名称。
my $i;  # 用来循环日志文件的每行。

my @content_chk;  # 存放校验文件
my $content_chk;  #  存放校验文件记录


my $count=0; #记录日志文件的行数

my $chk_size;
my $chk_lines;
my $file_size=0;
my $file_lines=0;  #以上4变量记录文件大小行书校验文件中记录的文件大小行书。

 

$count = `wc -l < $ARGV[0]`;
die "wc failed: $?" if $?;
chomp($count);

print $count;
print "$ARGV[0] has $count lines!!\n";

for ($i=0;$i<="$count";$i++){
   print "current line is :::$i\n"; 
   $file= `awk 'NR==$i' "$ARGV[0]"`;
   die "awk failed: $?" if $?;
    chomp($file);  
    print "current file is :::$file\n";
 
   open SOU,"< $file"  ;   # 打开每个文件。
   foreach(){
      
      #检查长度是否正确。
       $num_log=$num_log+1; #计算行数。
      $len = length($_);
      if ($len!=169){
         print " 第$num_log行的数据长度不对!\n";
       }
     # $mode = (stat($_))[7];         
    }

        # 得到每个文件的大小和行数。       
        @size=stat("$file");
        $file_size = $size[7];       # 得到文件的大小  
        $file_lines = `wc -l < $file`;
        chomp($file_lines);        #得到文件的行数。
 
 #得到校验文件记录的文件大小与行数。检查与校验文件是否匹配。
    open SOUC,"< $file.chk" ; 
    @content_chk=;

    foreach $content_chk(@content_chk)
    {
        if ($content_chk=~/dat,(.*),(.*)/)
        {
           $chk_lines=$1;
           $chk_size=$2;
           #print "the first::::: $chk_size,Second:$chk_lines\n";
           #print "$file 的大小为:$file_size ;行数为:$file_lines!\n";
      
           if ($file_size !=$chk_size)
           {
             print "数据长度为$file_size,校验文件中记录的为$chk_size,行数不对!!!";
           }
     
           if ($file_lines !=$chk_lines)
           {
             print "数据长度为$file_lines,校验文件中记录的为$chk_lines,大小不对!!!\n";
           }
      
     }
    }
#    close SOU; 
}

阅读(1178) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~