Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

fgrep ? ;)

[es] :: Linux :: fgrep ? ;)

[ Pregleda: 2430 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sv3ta

Član broj: 143
Poruke: 62
*.yubc.net



Profil

icon fgrep ? ;)09.10.2001. u 03:24 - pre 241 meseci
2 fajla ..jedan sadrzi email adrese osoba koje vise ne zele da primaju moje porukice
drugi sadrzi celu mail listu ...

fgrep -v -removelist maillist >> newfile
ovo provereno radi ali je suvise sporo (na dual gigahercu sa 1gb rama mu treba oko 30 min!!!) ... da li postoji neka druga komanda koja ovo brze zavrsava ?
Svt3a
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13650



+162 Profil

icon Re: fgrep ? ;)09.10.2001. u 05:01 - pre 241 meseci
Ne znam kako ti je ta komanda provereno radila, na mom grepu ne radi.
Mora ovako da se koristi:

grep -fremovelist -v maillist > newfile

Sad, što se brzine ovoga tiče, može varirati u zavisnosti od grepa koji koristiš ali po mom mišljenju, grep je najbrža alatka koju ćeš naći za ovo. Nisi naveo sa kojom verzijom grepa si pokušao, a bitno se razlikuju po regexp engineu koji koriste.
Predlažem da nađeš egrep čiji je originalni autor Alfred Aho koji koristi DFA regexp engine, možda će obavljati taj posao brže, ne garantujem.
Problem kod GNU grepova je što su većinom DFA ali postoje i neke verzije sa NFA engineom a uopšte nisam siguran koje su to i kada su izdavane, niti kako ih tačno raspoznati. Veliki haos vlada na tom polju trenutno..

Aj pre nego što daš više informacija o sistemu i grepu u kome ovo radiš, probaj ovo
egrep -fremovelist -v maillist > newfile
Ako je gnu grep u pitanju, ovo će verovatno pozivati isti taj grep sa -E opcijom.

Sad verovatno ćeš pitati i šta je problem sa NFA i DFA engineima pa pošto ni sam ne znam kompletan odgovor, napisaću ti odmah šta znam o tome:
Pre nego što jedan regexp bude upotrebljen, oba ova engine ga kompajliraju u neki interni oblik koji odgovara njihovim algoritmima za matching. NFA kompilacija je generalno brža i zahteva manje memorije. Postoje dve vrste NFA - tradicionalna i Posix ali kompajliraju bez neke razlike.
Tek u radu se može primetiti prednost DFA enginea. Tradicionalni NFA mora isprobati svaku moguću permutaciju regexa da bi zaključio da nema match-a. Ali za razliku od POSIX NFA engine-a, ovaj barem zna da se zaustavi kada je pronasao match. POSIX NFA engine ne staje ni tu nego nastavlja dok ne nađe NAJDUŽE MOGUĆE poklapanje tako da u stvari mora da ispita sve moguće permutacije. Tako da, pre nego što pišete regexp, morate znati koji engine koristi alatka za koju pišete inače izvršavanje može stvarno da potraje.
Moderni DFA engine-i pametno odlažu deo posla koji treba da se odradi za kasnije i tako smanjuju vreme i memoriju tokom kompajliranja, tako da kada pišete regexp za DFA engine ne morate mnogo brinuti za optimizaciju. Šta DFA u stvari radi je da unapred sagradi neku mapu tokom kompajliranja regexpa tako da već unapred zna kada pokuša prvi match i neki string matchuje ili ne, kakve su šanse daljeg match-a jer sa mape ne može skrenuti pošto se string ne menja. Engine tada samo prati mapu što doprinosi većoj efikasnosti DFA enginea od NFA u nekim slučajevima.
Naglasio bih NEKIM zato što to nije uvek slučaj, a priča je tako dugačka da ni sam ne znam na šta se dalje svodi. Ovo su glavne stvari koje sam uspeo da zapamtim, a o ovome se verovatno može pričati godinama, ne mesecima ili danima..

Stoga, nađi sve verzije grepa koje možeš i probaj ih sa i bez -E opcije, i vidi šta je najbrže.. to je najbolji odgovor koji ti za grep mogu dati. Možda se neko seti neke druge alatke koja bi ovo bolje odradila, sačekaj malo pa ćemo videti.jen poslovno profitabilan siste
 
Odgovor na temu

sv3ta

Član broj: 143
Poruke: 62
*.verat.net



Profil

icon Re: fgrep ? ;)09.10.2001. u 14:02 - pre 241 meseci
Citat:
Gojko je napisao:
Ne znam kako ti je ta komanda provereno radila, na mom grepu ne radi.
Mora ovako da se koristi:

grep -fremovelist -v maillist > newfile


radi, radi fgrep -v -f radi, grep -f -v ne radi (ne radi sa velikim fajlovima)
[email protected] removedir]$ grep -ftotal1 -v s >> fdf
grep: Regular expression too big

mora da postoji neka druga komanda za ovo .. ako ne komanda , mozda moze da se napise script (za PHP recimo) koji ce to 10x brze da odradjuje ...

sto se verzije grep-a tice, sve je to isti qrac ;)
Svt3a
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13650



+162 Profil

icon Re: fgrep ? ;)09.10.2001. u 14:07 - pre 241 meseci
Sveto pogledaj svoju prvu poruku, drugačiju sintaksu si koristio
 
Odgovor na temu

sv3ta

Član broj: 143
Poruke: 62
*.yubc.net



Profil

icon Re: fgrep ? ;)10.10.2001. u 02:20 - pre 241 meseci
Citat:
Gojko je napisao:
Sveto pogledaj svoju prvu poruku, drugačiju sintaksu si koristio :)



;)) Greska u prvoj poruci .. ;))

Svt3a
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.as.mi.is

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: fgrep ? ;)10.10.2001. u 04:15 - pre 241 meseci
Ako sam dobro razumeo, u jednom fajlu imas sve email adrese, a u drugom fajlu samo one koje bi zeleo da obrises iz prvog fajla. Right?

Koristi diff komandu za to. Najjednostavnije je.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

[es] :: Linux :: fgrep ? ;)

[ Pregleda: 2430 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.