2014-08-27 16:53 GMT+03:00 Özgür Kılıçaslan <[email protected]>:

> 27 Ağustos 2014 16:03 tarihinde Coskun Gunduz <[email protected]> yazdı:
>
> Sanırım şu işinizi görecektir:
>>
>>
>> #!/bin/bash
>>
>> IFS=
>> card=
>> tel=0
>> line=
>>
>> while read line
>> do
>>   if [[ $line == BEGIN\:VCARD* ]]
>>   then
>>     card=$line
>>
>>   else if [[ $line == TEL\;CELL* ]]
>>     then
>>       tel=1
>>       card=$card$line
>>
>>   else if [[ $line == END\:VCARD* ]] && [[ $tel == 1 ]]
>>     then
>>       card=$card$line
>>
>>       echo $card;
>>       card=
>>       tel=0
>>     else
>>       card=$card$line
>>
>>     fi
>>   fi
>>   fi
>> done < $1
>>
>> Hikmet Coskun Gunduz...
>>
>
> Merhaba,
>
> Aynı garip sonucu veriyor.
>
>
Merhaba,
Python'da şöyle birşey yaptım, denedim, sorun yok gibi:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

file = "a.txt"

f = open(file)
ff = f.readlines()

# Tum kisilerin listesi
kisiler = []
# Kisilere ait kartlar
kart = ""

# satırlar tek tek okunur
for line in ff:
    kart = kart + line
    # END:VCARD satırına kadar olan bölüm tek bir kartta toplanır
    if line.startswith("END:VCARD"):
        kisiler.append(kart)
        kart = ""

# tel no olan kişiler için yeni bir liste oluşturulur.
tel_olan_kisiler = []
for i in kisiler:
    if "TEL" in i:
        tel_olan_kisiler.append(i)

# tel.no olan kişilerin dökümü
for x in tel_olan_kisiler:
    print "------------"
    print x


-- 
Saygılar,
Aytekin Aygün
_______________________________________________
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