[Fwd: Re: çift kayıtları bulma]

2006-07-05 Başlik Zeki Çatav
Sanırım bu e-posta gitmedi, yada bana geri gelmedi. Ekte tekrar
gönderiyorum.
---BeginMessage---
Sal, 2006-07-04 tarihinde 18:53 +0300 saatinde, Recai Oktaş yazdı:
 * Zeki Çatav [2006-07-04 10:32:05+0300]
  Sal, 2006-07-04 tarihinde 02:38 +0300 saatinde, Recai Oktaş yazdı:
   Zeki hocam, ekte hızlıca yazdığım bir perl betiği gönderiyorum.  CPAN'ı
 [...]
  Bu betik çalıştı. Seçilen değişkene göre ayıklama işlemini başarıyla
  yapabildi. Ancak birşey daha sormak istiyorum. Seçilen değişken bir
 
 Ektekini deneyelim.  XBase modülünde bu işi daha zarif yapmanın bir yolu
 vardır belki, ama bildiğimiz taraftan gitmek daha kestirme geldi.  Yeni
 haliyle şöyle kullanacaksınız:
 
 # alan adları ve sütun noları görüntüler
 ./dbf_uniq.pl foo.dbf
 # 3-5 ve 9 sütunları ve FOO ile BAR arası kayıtları işler
 ./dbf_uniq.pl foo.dbf 3-5 FOO-BAR 9
Merhaba,
Bu yöntem ile belli bir aralığı kontrol edip seçim yapamadım. Tek değişkene göre
seçim yaptı ama bu yöntemle dosya fazla kırpıldı. 1007 kayıt içeren bir dosyayı 
bu yöntemle dosya numarası değişkenine göre tarayınca 402 kayda
indirgedi. Oysa ilk önerdiğiniz (dünkü e-postanız) yöntemde aynı alana
göre tarama 758 kayda indiriyordu.
Aynı dosyayı .csv formatına çevirip Serdar Aytekin'in önerdiği yöntemle
cat aaanv.csv | sort -t' ' | uniq -w10  dene1.txt işleyince 751 kayıt
ile sonuçlanıyor. -w10 sadece dosya numarası kadar karaktere karşılık
geliyor.
Ayrıca bugünkü perl betiği değişken adlarını karışık sıralıyor, dünkü
numarasız ama doğru sırayla dökmekteydi.

Son perl betiği çıktısı 
..
Malformed UTF-8 character (byte 0xfe) at dbf_uniq2.pl line 54.
Malformed UTF-8 character (unexpected non-continuation byte 0x73,
immediately after start byte 0xfd) at dbf_uniq2.pl line 54.
Malformed UTF-8 character (unexpected non-continuation byte 0x7a,
immediately after start byte 0xfd) at dbf_uniq2.pl line 54.
== [INDEKS] ALAN_ADI ==
[59] DESTEK[74] LBHT[63] OPRITM[95] CIKISTRH[50]
ACIK3AAA[85] VENTILAT[76] YBRITM[3] SOYAD[94] YBCIKTRH
[87] YBKOMP2[22] HT[30] SISTEM2[12] ISLM1TRH[17] AO
[8] ILCE[93] YBCIKTUR[20] PAKET[42] TANI2AAA[33]
GRFOZELL[68] KOMPTED2[11] ILKISLM1[86] YBKOMP1[6] ADRES
[100] CIKACIK1[67] KOMPTED1[29] DURUM1[23] OBEZ[15]
ILKISLM3[37] KAPAKNO[18] SIGARA[13] ILKISLM2[16]
ISLM3TRH[35] GRFBOY[14] ISLM2TRH[46] ISLEM2AA[52] TRPERF
[4] YAS[90] YBKOMPTE[47] ISLEM3AA[26] SEKEL[102]
CIKACIK3[24] LIPID[73] YBLCO[57] OPERTRH[48] ACIK1AAA
[92] YBTDP[34] GRFCAP[79] MKDSURE1[83] DREN1[10] PKODU
[62] ASISTE[101] CIKACIK2[7] ADRES2[25] EMBSSS[55]
TRPSURE[69] KOMPTED3[54] RSPSURE[60] INOTROP[105]
PLKFORM[40] ASPSURE[106] YATISTRH[56] TSASURE[84] DREN2
[21] DM[27] EMBPERFR[32] GRFTCINS[2] AD[104] PLKTRH
[89] YBKOMP4[58] AAANVRZM[78] YBMKDST1[38] REIMPLNT  [75]
YBCHF[5] CINS[49] ACIK2AAA[103] CIKISTAR[19] YIL[39]
ASPERF[81] MKDSURE2[88] YBKOMP3[99] CIKKOMP3[41]
TANI1AAA[28] SISTEM1[70] OPEX[31] DURUM2[45] ISLEM1AA
[97] CIKKOMP1[80] YBMKDST2[77] YBISKEMI[1] DN[98]
CIKKOMP2[91] YBKAN[53] TSA[96] CIKTURU[61] IABP[65]
OPKOMP2[82] YBIDRAR[36] KAPAKKOD[51] RSPERF[43] TANI3AAA
[72] YBGIRTRH[71] OPEXNDEN[66] OPKOMP3[9] IL[64] OPKOMP1
[44] TANI4AAA


İlk perl betiği çıktısı

Malformed UTF-8 character (byte 0xfe) at dbf_uniq.pl line 33.
Malformed UTF-8 character (unexpected non-continuation byte 0xfd,
immediately after start byte 0xf0) at dbf_uniq.pl line 33.Malformed
UTF-8 character (unexpected non-continuation byte 0x64, immediately
after start byte 0xfd) at dbf_uniq.pl line 33.Malformed UTF-8 character
(unexpected non-continuation byte 0x69, immediately after start byte
0xe7) at dbf_uniq.pl line 33.Aadaki alanlardan biri seilmeli:
DN AD SOYAD YAS CINS ADRES ADRES2 ILCE IL PKODU ILKISLM1 ISLM1TRH
ILKISLM2 ISLM2TRH ILKISLM3 ISLM3TRH AO SIGARA YIL PAKET DM HT OBEZ LIPID
EMBSSS SEKEL EMBPERFR SISTEM1 DURUM1 SISTEM2 DURUM2 GRFTCINS GRFOZELL
GRFCAP GRFBOY KAPAKKOD KAPAKNO REIMPLNT ASPERF ASPSURE TANI1AAA TANI2AAA
TANI3AAA TANI4AAA ISLEM1AA ISLEM2AA ISLEM3AA ACIK1AAA ACIK2AAA ACIK3AAA
RSPERF TRPERF TSA RSPSURE TRPSURE TSASURE OPERTRH AAANVRZM DESTEK
INOTROP IABP ASISTE OPRITM OPKOMP1 OPKOMP2 OPKOMP3 KOMPTED1 KOMPTED2
KOMPTED3 OPEX OPEXNDEN YBGIRTRH YBLCO LBHT YBCHF YBRITM YBISKEMI
YBMKDST1 MKDSURE1 YBMKDST2 MKDSURE2 YBIDRAR DREN1 DREN2 VENTILAT YBKOMP1
YBKOMP2 YBKOMP3 YBKOMP4 YBKOMPTE YBKAN YBTDP YBCIKTUR YBCIKTRH CIKISTRH
CIKTURU CIKKOMP1 CIKKOMP2 CIKKOMP3 CIKACIK1 CIKACIK2 CIKACIK3 CIKISTAR
PLKTRH PLKFORM YATISTRH

dbf formatında perl ile işlem yapmak ile csv 

Re: [Fwd: Re: çift kayıtları bulma]

2006-07-05 Başlik Zeki Çatav
Çrş, 2006-07-05 tarihinde 18:52 +0300 saatinde, Recai Oktaş yazdı:
Merhaba,
 Aralık dediğinizden ben mesela 3.ncü ve 15.nci sütunlar arasını
 anlıyorum.  Eğer belirli bir sütundaki (alandaki) değer aralığını
 kastediyorsanız o farklı.  Bu (basit) betik içeriğin ayrıntılarıyla
 ilgilenmez, sadece kayıtların (karakter bazlı bir karşılaştırmayla)
 mükerrer olup olmadığına bakar.
Evet benim kasdettiğimde aynen 3. ve 15. sütunlar arası tanımına uyuyor.
  seçim yaptı ama bu yöntemle dosya fazla kırpıldı. 1007 kayıt içeren bir 
  dosyayı 
  bu yöntemle dosya numarası değişkenine göre tarayınca 402 kayda
  indirgedi. Oysa ilk önerdiğiniz (dünkü e-postanız) yöntemde aynı alana
  göre tarama 758 kayda indiriyordu.
 
 Evet, hata yapmışım.  Ekteki sürümde bu hatanın olmaması lazım.
Maalesef aynı şekilde 402 kayda indirgiyor.
  Aynı dosyayı .csv formatına çevirip Serdar Aytekin'in önerdiği yöntemle
  cat aaanv.csv | sort -t' ' | uniq -w10  dene1.txt işleyince 751 kayıt
  ile sonuçlanıyor. -w10 sadece dosya numarası kadar karaktere karşılık
  geliyor.
  Ayrıca bugünkü perl betiği değişken adlarını karışık sıralıyor, dünkü
  numarasız ama doğru sırayla dökmekteydi.
 
 Düzelttim.
Evet bu kısım düzelmiş. Doğru sırada listeliyor.
  Son perl betiği çıktısı 
  ..
  Malformed UTF-8 character (byte 0xfe) at dbf_uniq2.pl line 54.
   ^^
 
 Bu uyarılar zararsız.  Bazı iletiler için UTF-8 kodlu Türkçe karakterler
 kullanmıştım.  Bu karakterler posta iletimi sırasında ISO'ya dönüştürülmüş
 görünüyor.  Yenisini gzip korumalı olarak gönderiyorum.  Yine sorun çıkarsa
 göz ardı edin.
İşlemde çıkan tek hata bu oldu. UTF-8 karakter hatası kalktı.
Use of uninitialized value in hash element at dbf_uniq.pl line 67.
  dbf formatında perl ile işlem yapmak ile csv formatında bash ile işlem
  yapmak öneriniz nedir?
 
 Bir kereye has bir işlem ise bu, en basit (ve sizin tarafınızdan müdahale
 edilebilir) olanını, yani Serdar'ın önerdiği yöntemi tercih edebilirsiniz.
 Ama böyle başka bir çok dosya varsa ve gelecekte bu durumla tekrar
 karşılaşma ihtimaliniz varsa dbf üzerinden gitmek daha uygun olabilir.
Bu dosyalar bizim hasta veri tabanı programımızın sorgu sonucu oluşturduğu bir 
veri alt grubu.
Butür dosyalar hep olacak, bende o nedenle sizin önerdiğiniz yöntem ile
gitmeyi düşünerek size zahmet vermeye devam etmekteyim.
Ancak eğer isterseniz sizi daha fazla yormaktan vazgeçip diğer yöntemi
kullanmaya devam edebilirim.
Teşekkürler.
İyi çalışmalar.

-- 
Zeki Çatav [EMAIL PROTECTED]
Türkiye Yüksek İhtisas Hastanesi


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]