Kod uzun ugraslar sonucu biraz daha duzenlenip detaylandirilmistir.
-
[Aciklama]
Txt belgesinde duzenli olan kayitlardan, pozisyonunu bildigimiz kelimenin ayni kayit veya farkli olarak toplam sayisini verir.
Ve ayni kayitlara iliskin degerleri detay olarak listeler.
-
Ornek dosya.txt belgesi icerigi
-
ali 159.178.116.94 web 24/10/2022
veli 120.190.221.151 web 10/10/2022
deli 128.137.95.185 sohbet 02/10/2022
ayse 236.163.180.140 mobil 10/10/2022
elma 159.192.170.116 web 05/10/2022
ayse 173.241.234.155 sohbet 16/06/2022
kelebek 173.241.234.155 mobil 16/07/2022
Zurna 173.241.234.155 web 21/10/2022
Mesut 173.241.234.155 web 03/10/2022
mahmut 143.97.90.224 web 21/10/2022
deneme 143.97.90.224 web 02/10/2022
defter 143.97.90.224 sohbet 22/10/2022
kitap 115.190.111.95 web 14/10/2022
Zurna 146.203.169.130 mobil 01/10/2022
Zurna 181.192.194.234 androirc 13/10/2022
ali 124.101.193.227 androirc 15/09/2022
deli 91.153.104.91 web 21/08/2022
deli 153.225.235.160 web 16/10/2022
---
3. kelimeye gore ayni farkli kayit arama yapilacaksa kullanilacak komut,
-
/aynikayit dosya.txt 3
-
Cikan sonuc:
-
[Kayit => Kac Kez Tekrar]
----------------------------------------
androirc => 2 kez
mobil => 3 kez
sohbet => 3 kez
web => 10 kez
-
Toplam 18 kayittan 0 adet farklı, 4 adet tekrarlayan, aynı kayit bulundu.
Bu işlem 0.125 saniye sürdü.
-
Listede gordugunuz ilgili kayitlarin icerigi icin /detay kayit komutunu kullanabilirsiniz.
---------------
Kod asagidan basliyor.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias aynikayit {
if (!$1) { echo $color(info) * Lütfen tarama yapılacak dosyayı belirtin. Örnek: /Farklisay3 dosya.txt satirdaki-kayıt-pozisyonu-kacinci-kelime | Halt }
if (!$2 || $2 !isnum) { echo $color(info) * Arama yapilacak kayıtın satirda kacinci kelime oldugunu belirtin.Eger sizin kayıt her satirda 2. kelime ise, Ornek: /farklisay3 dosya.txt 2 | halt }
if !$isfile($1) { echo -a Dosya bulunamadı | halt }
if $fopen(test) { .fclose test }
set -e %dosyakyttxt $1
set -e %str_sno_ $2
.fopen test %dosyakyttxt
var %tarama.bs $ticks , %ayni , %f
while ($fread(test)) {
var %dgr = $gettok($v1,$2,32)
if $var($+(%,j_,%dgr)) { inc %ayni_ [ $+ [ %dgr ] ] }
var % $+ j_ $+ %dgr OK
inc %f
}
.fclose test
var %i = $var(%ayni_*,0), %topl
write -c pattern.txt | echo -a $str(-,40) | echo -a [Kayit => Kac Kez Tekrar] | echo -a $str(-,40)
while %i {
var %L = $remove($var(%ayni_*,%i),$chr(37),ayni_) , %N = $calc($var(%ayni_*,%i).value + 1)
echo -a %L => %N kez | write pattern.txt %L | inc %topl %N | dec %i }
echo -a -
echo -a Toplam %f kayittan $calc(%f - %topl) adet farklı, $var(%ayni_*,0) adet tekrarlayan, aynı kayit bulundu.
echo -a Bu işlem $calc($calc($ticks - %tarama.bs) /1000) saniye sürdü.
echo -a -
echo -a Listede gordugunuz ilgili kayitlarin icerigi icin /detay kayit komutunu kullanabilirsiniz.
unset %ayni_* %tarama.bs
}
alias detay {
if (!$1) { echo $color(info) * Listedeki Tekrarlayan Kayitlarin Detayina Bakilacak Kaydi Yazmadiniz. Ornek: /detay kayit | halt }
if $fopen(test) { .fclose test }
if !$patvar(pattern.txt,$1) { echo $color(info) * Listede Olmayan Hatalı kayit girdiniz. | halt }
var %pattern = /^ $+ $replace($reptok($puttok($read(%dosyakyttxt),(.+),1-,32),(.+),$1,%str_sno_,32),$chr(32),\s) $+ /i $+ $
.fopen test %dosyakyttxt
echo -a $1 kaydinin detaylari
echo -a $str(-,15)
while ($fread(test)) { var %n = $v1 | if ($regex(%n,%pattern)) { echo -a %n } }
echo -a $str(-,15)
.fclose test
}
alias -l patvar { var %j = 1 | while $read($1,%j) { if ($v1 == $2) { return $true } | inc %j } | return $false }
-
-
Kod yazarlari: HsN & jeun