Wycinanie z duuuu?żego pliku tekstowego

0

Cześć,

od razu napiszę o co mi chodzi. Otóż w mojej firmie mamy serwer PROXY który zrzuca logi odwiedzanych stron internetowych. Nasz nowy szef ma fisia na punkcie internetu i rozpoczął analizę, kto gdzie wchodzi. Chodzi mi więc o, najlepiej napisanie programiku, który z tych logów (pliki tekstowe ale mające po kilkaset mega!!!) wytnie linie mające gdzieś konkterny ciąg np '129.0.0.100' oraz w tym samym wierszu ciąg np 'gry', 'mp3', 'zakupy', 'reklama' itp. i dodatkowo, żeby atrybuty tego loga (data modyfikacji itd) się nie zmieniły.
Sam na razie nie potrafię tego zrobić :-(

Dzięki i pozdrówka!

0

Popieram twojego szefa.

0

Popieram twojego szefa.

Ja też :)
O ile usunięcie odpowiednich wpisów jest dosyć prosta (mimo tak dużego rozmiaru), to zmiana czasu edycji jest troszkę gorsza (choć oczywiście możliwa). Ale ze względu na to, że nie pachnie mi to najładniej... Życzę powodzenia.

0

Mi do skonczenia budy jeszcze daleko wiec ci pomoge. :-)
Robisz cos takiego:

  1. wstaw se na forme butona
  2. wstawiasz se edita (tu wpisujesz te słowa tzn. jedno z nich)
  3. pod tym butone wpisz taki kodzik:

[code]var pozycja:integer;
a, b:string;
s:TStringList;
nrLini:integer;
begin
a:=Edit1.Text
s:=TStringList.Create;
s.LoadFromFile(scierzka_do_pliku_txt(log));
for nrLini:=0 to s.count - 1 do
begin
pozycja:=0;
b:=s[nrLini];
pozycja:=pos(a, b);
if pozycja0 then
s.Delete(nrl);
end;
s.SaveToFile(scierzka_do_pliku_txt(log));
end;
[/code]

Powinno zadzialac. Ale nie zmienia daty modyfikacji.

PS. Jakby nie dzialalo to zlapiesz mnie na GG (2517432).
PS2. Sorki ze pisze bez polskich znakow ale mi system cos siada.

0

Cześć,

Do: Szymek, Dryobates - generalnie ja też popieram mojego szefa (jest lepszy niż poprzedni ;-) ) ale co do korzystania z internetu, to ma wyjątkowo wredne zasady (pies ogrodnika - sam łazi cały dzień a innym nie pozwala :-[ ). A że nie pachnie to ładnie - no mi też by nie pachniało, gdyby nie było w pewien sposób groźne. Chodzi o to, że poprzedni szef nic się nie czepiał a ten nowy z góry zapowiedział, że internet, a szczególnie ściąganie gierek, muzyki czy reklamy to już w ogóle wręcz zbrodnia... A że ludziom (moi kumple i koleżanki) zostały śmieci "ze starej działalności internetowej" to pomyślałem, że może coś sie da zrobić. Ot i tyle, żadnych podtekstów.

Edi22 - dzięki!

Wszystkich pozdrawiam, ATP!

//Ekhm - "pies ogrodnika" to osoba, która sama czegoś nie robi i nie pozwala innym. Skoro piszesz, że Twój szef łazi po necie, a nie pozwala innym, to już nie to określenie. To tak na marginesie :-) - m.M

0

Wydawało mi się [???] , że pies ogrodnika to ktoś taki, kto sam coś robi a innym tego samego zabrania. Ale faktycznie - to tak na marginesie...

A programik Eddiego22 po kilku minutach wyłożył się z komunikatem:

"List index out of bounds (805476)" :-(

Plik na którym testowałem kod Eddiego22 ma 198 MB.

ATP.

PS. A tak nieśmiało: może ktoś jednak coś wymyśli...

0

To był taki troche ogólny programik. Musiałbym miec ten plik zeby zobaczyc jak jest zbudowany zeby stworzyc naprawde dobry. A wylorzyl sie chyba bo sie string list zapelnil.

0

Nie gwarantuje ze to zadziala, ale wydaje mi sie ze w petli for powinno byc downto, czyli jakos tak:

For i:=s.count-1 downto 1 do
itd.

Bo jak się usuwa coś z w zawartości pętli for, ilość tego czegos zmniejsza sie o 1, a licznik jest już zapisany, więc się nie uaktualni...

0

Nie ładujcie do TStringList tak dużych danych!!
Parę postów niżej jest o usuwaniu z dużych plików tekstowych. Zerknijcie tam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1