[ Pharos @ 06.05.2006. 09:03 ] @
Potrebno mi je da iz jednog fajla cca. 100.000 redova, da izvučem samo one redove koji sadrže npr. Geschäftsleitung i da ih upišem u neki drugi fajl. E sad lako je kad se traže slova iz engleskog alfabeta, al šta da radim sa tim specifičnim karakterima iz nemačkog jezika? Pošto sve kucam u notepad-u, snimio sam fajl kao unicode i ne pomaže.
Zahvaljujem se na pomoći.
[ Časlav Ilić @ 06.05.2006. 12:03 ] @
Da bi razumeo Unikod koji dolazi spolja, Perl treba pokrenuti sa opcijom -C. Da bi razumeo Unikod u sopstvenom kodu, treba zadati use utf8; na početku izvorne datoteke.

Takođe, nije dovoljno sačuvati izvornu datoteku u bilo kom unikodskom zapisu, već mora biti UTF-8. Majkrosoftovi programi, pa tako i Notepad, podrazumevaju UCS-2 zapis unikodskih tekstova, tako da vidi možeš li da izabereš UTF-8. Ako ne, nađi neki drugi uređivač teksta. U stvari, u svakom slučaju nađi neki drugi uređivač :)

[Ovu poruku je menjao Časlav Ilić dana 06.05.2006. u 13:05 GMT+1]
[ cabrilo @ 21.06.2006. 18:17 ] @
Citat:
Pharos: Potrebno mi je da iz jednog fajla cca. 100.000 redova, da izvučem samo one redove koji sadrže npr. Geschäftsleitung i da ih upišem u neki drugi fajl. E sad lako je kad se traže slova iz engleskog alfabeta, al šta da radim sa tim specifičnim karakterima iz nemačkog jezika? Pošto sve kucam u notepad-u, snimio sam fajl kao unicode i ne pomaže.
Zahvaljujem se na pomoći.


Evo, na brzinu sam napisao skriptić koji to radi:


Code:

#!/usr/bin/perl
use utf8;

open (INF, "fajl");
binmode (INF, ':utf8');
my @buffer = <INF>;
close (INF);

binmode (STDOUT, ":utf8");
foreach $l (@buffer) {
    if ($l =~ /[^a-zA-Z.,!?\n\s]/) {
        print $l;
    }
}


U suštini, bitno je da učitaš fajl kao utf 8 (zato je binmode (INF, ':utf8')). Posle toga uradiš regex
/[^a-zA-Z.,!?\n\s]/

što u prevodu znači: ako niz ne sadrži nešto od: sva mala slova (a-z), sva velika slova (A-Z), tačku, zarez, uzvičnik, upitnik, novi red ili razmak. Recimo, ä je takvo slovo :)

Ovo što je Časlav rekao isto ima smisla.

Nadam se da sam dobro razumeo šta ti je potrebno...