Selam,

Bash ile yapmak isterseniz;
haydar@django:/tmp/haydar$ cat $file|tr ' ' '\n'|sort|uniq -c|sort -r
      6 51
      4 46
      3 32
      3 21
      3 14
      2 52
      2 48
      2 44
      2 35
      2 34
      2 31
      2 30
      2 29
      2 26
      2 23
      2 12
      2 07
      2 05
      1 53
      1 47
      1 43
      1 42
      1 41
      1 40
      1 39
      1 38
      1 33
      1 27
      1 22
      1 20
      1 19
      1 17
      1 16
      1 11
      1 10
      1 09
      1 06
      1 03
      1 02



--
# Haydar Acer
http://haydar.tk
http://facebook.com/devvrim
http://twitter.com/devvrim
http://www.linkedin.com/in/haydaracer


2013/8/30 Levent SARI <[email protected]>

>  Herkese iyi geceler,
> İnsanoğlu sanırım her şeyin çok daha iyisini,rahatını ve kolayını istiyor
> devamlı.
> Bu iyi bir şey mi bilemiyorum ama kaç gündür uğraştığım şeyin sonucunda
> tamda sizinde destekleriniz ile istediğim türde bir ürün aldım derken bu
> seferde bu işin daha pratik bir yolu yok mu diye düşünmeye başladım.
> Keza şuana kadar yaptığım adımları gözden geçirince epey uğraştığımı
> gördüm.
> Öyle ki intranet de kullandığımız uygulama ile ilgil günlük logları takip
> ve okuma işi için şöyle bir yol izliyoruz.
>
> 1-)Client lar makine üzerindeki uygulamaya erişip her işlem yaptıkça
> makine her yapılan işlem sonucunda 192.168.x.y de bir log çıktısı veriyor.
> Bende aşağıda yazdığım php kodu ile(localhost/levent/parseTarih.php)
> erişim tarihlerini okuyup, get_numbers('20130829'); formatın da ekrana
> basıyorum.
> -------------------------------------------------
> <?php
>  function cekecek($site)
>     {
>         if(function_exists('curl_exec')) {
>             $ch = curl_init();
>             curl_setopt($ch,CURLOPT_URL, $site);
>             curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux
> i686; tr-TR; rv:1.9.0.3) Gecko/2008092818 Pardus/2008 Firefox/4.0.0');
>             curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
>             curl_setopt($ch, CURLOPT_HEADER, 1);
>             curl_setopt($oturum, CURLOPT_SSL_VERIFYPEER, false);
>
>             $return = curl_exec($ch);
>             curl_exec($ch);
>
>             return $return;
>         }
>         else{
>             return file_get_contents($site);
>         }
>     }
> $source = cekecek('http://192.168.x.y/sonuclar/logTarihleri.php?tur=islem');
>
>
> preg_match_all('#"tarih"\:"(.*?)"#si',$source, $parse);
>
> foreach($parse[1] as $element)
>         echo 'get_numbers(\'' .$element .'\');' . '&nbsp;'. '<br/>';
>
> ?>
>
> ÇIKTISI:
> get_numbers('20130819');
> get_numbers('20130810');
> get_numbers('20130809');
> get_numbers('20130808');
> -------------------------------------------------
>
> 2-)localhost/levent/parseTarih.php ile ekrandan aldığım tarihleri
> kopyalayıp aşağıdaki php koduna elle yapıştırıyorum.
> daha sonra aşağıda yazdığım php kodunu localhost/levent/parse.php olarak
> çağırıyorum ve neticede tek tek hata kodlarını alıyorum.
>
> -----------------------------------------------------------------------------------------------------------------------------
> <?php
>
> function cekecek($site)
>             {
>                     if(function_exists('curl_exec')) {
>                             $ch = curl_init();
>                             curl_setopt($ch,CURLOPT_URL, $site);
>                             curl_setopt($ch,CURLOPT_USERAGENT,
> 'Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.3) Gecko/2008092818
> Pardus/2008 Firefox/4.0.0');
>                             curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
>                             curl_setopt($ch, CURLOPT_HEADER, 1);
>
> //curl_setopt($ch,CURLOPT_COOKIEJAR,"cookies.txt");
>
> //curl_setopt($ch,CURLOPT_COOKIEFILE,"cookies.txt");
>                             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,
> false);
>
>                             $return = curl_exec($ch);
>                             curl_exec($ch);
>
>                             return $return;
>                     }
>                     else{
>                             return file_get_contents($site);
>                     }
>             }
>      function get_numbers($date) {
>     $source = cekecek('
> http://192.168.z.t/sonuclar/logTarihleri/islem/'.$date.'.php');
>     preg_match_all('#"rakamlar"\:"(.*?)"#si', $source, $parse);
>     foreach($parse[1] as $element)
>
>         //echo str_replace("#", " ",$element) . '&nbsp;';
>         echo str_replace("#", " ",$element) . '&nbsp;'.'<br/>';
>
>         }
> get_numbers('20130819');
> get_numbers('20130810');
> get_numbers('20130809');
> get_numbers('20130808');
> ?>
> ÇIKTISI :
>
>
>
> 23 44 19 27 46 39 32 05 51 26 53 12 21 03 17 07 46 30 32 48 51 06 35 16 35
> 12 52 48 07 14 46 29 40 32 31 26 34 21 51 14 47 22 23 38 21 09 41 31 34 30
> 33 11 29 51 51 10 43 46 14 20 52 51 44 02 42 05
> --------------------------------------------------------------------------------------------------------------------
>
> 3-)Son olarak da 2. adımda aldığım hata kodlarını isle.php dosyasının
> içerisine yapıştırıp browserdan localhost/levent/isle.php dosyasını
> çağırıyorum
>
> ------------------------------------------------------------------------------------------------------------------------
>
> <?php
>
> $log="23 44 19 27 46 39 32 05 51 26 53 12 21 03 17 07 46 30 32 48 51 06
> 35 16 35 12 52 48 07 14 46 29 40 32 31 26 34 21 51 14 47 22 23 38 21 09 41
> 31 34 30 33 11 29 51 51 10 43 46 14 20 52 51 44 02 42 05";
>
> $arr=explode(" ",$log);
>
>
> for($i=0; $i<count($arr); $i++)
> $array[$arr[$i]]++;
>
> arsort($array);
>
> echo '<pre>';
> print_r($array);
> ?>
>
> ÇIKTISI :
>
> Array
> (
>     [51] => 6
>     [46] => 4
>     [14] => 3
>     [21] => 3
>     [32] => 3
>     [48] => 2
>     [30] => 2
>     [34] => 2
>     [23] => 2
>     [31] => 2
>     [07] => 2
>     [52] => 2
>     [29] => 2
>     [35] => 2
>     [05] => 2
>     [26] => 2
>     [44] => 2
>     [12] => 2
>     [11] => 1
>     [33] => 1
>     [41] => 1
>     [10] => 1
>     [09] => 1
>     [43] => 1
>     [42] => 1
>     [02] => 1
>     [20] => 1
>     [38] => 1
>     [47] => 1
>     [39] => 1
>     [03] => 1
>     [16] => 1
>     [06] => 1
>     [27] => 1
>     [40] => 1
>     [53] => 1
>     [17] => 1
>     [19] => 1
>     [22] => 1
> )
>
>
> ------------------------------------------------------------------------------------------------------------------------
> Şeklinde oluyor ve istediğimi elde ediyorum.
> Ancak burada karşıma çıkan soru 3 seferde yaptığım işi tek seferde nasıl
> yapa bilirim?
> Keza her seferinde yeni tarihleri ve hata kodlarını kopyala yapıştır
> yapmak yerine web browserdan sadece localhost/levent/isle.php dosyasını
> çağırsam o benim yerine tüm bu işleri halledip bana sadece çalışmaya
> başladığı ilk günden beri o güne kadar oluşan logtari hlerini ve hata
> kodlarını okuyup hangi hata kodundan kaç adet basıldığını verse?
>
> Tüm bu işlemlerini client bir makinede çalışan betikler ile yapmak
> istemiyorum.
> Keza her seferinde bu betikleri kullanacak olan kişinin makinesine
> kopyalamak gerekecek.
> Ancak en azından bir php script olursa herkes kendi makinesinden sadece
> bir adrese bağlanacak ve böylece karşına sadece sonuçlar gelecek.
> Yıl sonu analiz işlemlerinde sırtıma bina yük kurtulmuş olacak.
> Kolaylıklar Levent....
>
> 29-08-2013 23:42 tarihinde, H.İbrahim Yılmaz yazdı:
>
> Merhaba Levent Bey,
>
>  Aşağıdaki ufak perl betiği işinizi görecektir:
>
>   #!/usr/bin/perl
>  use strict;
>  use warnings;
>
>   my $logfile = "log.txt";
>  my $data = do{local(@ARGV,$/)=$logfile;<>};
>
>   my %count;
>
>   my @errors = split(' ', $data);
>
>  foreach my $error (@errors) {
>    $count{$error}++;
>  }
>
>   print "HATA"." "."ADET\n";
>  foreach my $error (keys %count) {
>   print "$error : $count{$error}\n";
>  }
>
>   exit 0;
>
>  Selamlar.
>
>
> 29 Ağustos 2013 21:03 tarihinde Levent SARI <[email protected]> yazdı:
>
>>  Arkadaşlar ofisde kullandığımız yazılımlardan bir tanesi aşağıdaki gibi
>> bir log çıktısı veriyor.
>> Log dosyasında 1 ile 34 arasında her bir hata/ işlem için bir sayı numarası
>> basılmakta.
>> örnk: 4 --> yetkisiz erişim vb.
>> Bende bir script ya da uygulama ile bu log dosyasında ki hata kodlarını
>> sayısını almak istiyorum.
>>
>> Yazacağım uygulama log dosyasını okuyup içerisinde kaç numaralı hata
>> kodundan kaç adet basıldığını bana ayrı bir çıktı olarak vermeli.
>>
>> Örnk: 34 -> 20 adet
>>            12 -> 12 adet gibi.
>>  Bir kaç şey konuştuk arkadaşlar ile ama pek çıkamadık işin içinden.
>> Keza benim aklıma gelen ve ilk etapda yapmasını istediğim şeyyazılabilecek 
>> bir metod log
>> dosyasının yolunu vermek ve bu log.txt yi okutup sonucu çıktı olarak
>> başka bri txt dosyasına verdirmek.
>> Konu hakkında önerileriniz nedir?
>> Benimle de paylaşa bilrseniz çok memnun olurum.
>> Kolaylıklar Levent "SARI"
>> ###########################################
>> Log.txt dosyasının içeriği
>> 23 44 19 27 46 39 32 05 51 26 53 12 21 03 17 07 46 30 32 48 51 06 35 16
>> 35 12 52 48 07 14 46 29 40 32 31 26 34 21 51 14 47 22 23 38 21 09 41 31 34
>> 30 33 11 29 51 51 10 43 46 14 20 52 51 44 02 42 05
>>
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> [email protected]
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>
>
>  --
> *Mother's gonna keep you right here under her wing. / She won't let you
> fly, but she might let you sing. / Mama's gonna keep baby cozy and warm.*
>
>
> _______________________________________________
> Linux-programlama mailing 
> [email protected]https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap