perl -e 'use warnings; use 5.016; use MIME::Base64; use Encode; use Unicode::Collate::Locale; my$U=Unicode::Collate::Locale->new(locale=>"hu"); my(@o,@u); for my$N (glob("$ARGV[0]/predefhiddenfolder/backup/WIP/32/contacts/*.vcf")) { open my$C, "<", $N or die; my @r; while(<$C>) { /\V/ or next; /\A([^:;]*)(?:;([^:]*))?:([^\n\r;]*)\r?\Z/ or do{warn "ignoring in $N: $_"; next}; my($k,$e,$v)=($1,$2//"",$3); "ENCODING=BASE64"eq$e and $v=decode_base64($v); "X-NOKIA-PND-GROUP"eq$k and $v=encode_utf8(decode("utf16le",$v)=~s/\0\z//r); if("BEGIN"eq$k||"VERSION"eq$k||"END"eq$k){next}else{my$b=("N"eq$k||"TEL"eq$k)?"":"$k=";push@r,$b.$v} }; push@o,join(";",@r)."\n"; push@u,chr($r[0]=~/^\+/).$U->getSortKey(decode_utf8($r[0])); } print @o[sort {$u[$a]cmp$u[$b]} keys@u];' Backup015 > cont.txt #### perl -e 'use warnings; use 5.016; use MIME::Base64; use Encode; binmode STDOUT,":encoding(utf8)"; my@o; for my$N (glob("$ARGV[0]/predefhiddenfolder/backup/WIP/32/contacts/*.vcf")) { open my$C, "<", $N or die; my @r; while(<$C>) { /\V/ or next; /\A([^:;]*)(?:;([^:]*))?:([^\n\r;]*)\r?\Z/ or do{warn "ignoring in $N: $_"; next}; my($k,$e,$v)=($1,$2//"",$3); "ENCODING=BASE64"eq$e and $v=decode_base64($v); "X-NOKIA-PND-GROUP"eq$k and $v=encode_utf8(decode("utf16le",$v)=~s/\0\z//r); if("BEGIN"eq$k||"VERSION"eq$k||"END"eq$k){next}else{my$b=("N"eq$k||"TEL"eq$k)?"":"$k=";push@r,$b.$v} }; push@o,decode_utf8(join(";",@r)."\n"); } print sort({fc$a cmp fc$b} @o);' Backup015 > contacts.txt