Gemma wrote:
Potrzebuje prostego utila kasującego wybrane linie separowane CRLF. Parametrem moglby byc np. znak rozpoczynający wiersz. Problem tylko, że plik ma juz w tej chwili 150 MB a linie nawet po 100 KB.
Do tej pory radzilem sobie dosowymi find i type, ale zadanie caly czas wymaga uwagi i kontroli bo type czyta do 4KB w linii tylko. Może ktoś skrobnąlby mi cos (na potrzeby Wikipedii of coz). Kiedys ludzie takie cos pisali w Pascalu przy sniadaniu. :-)))
Nie przy śniadaniu, tylko przy kolacji. Nie w Pascalu (w tym to piszą tyko Ci co nie umieją programować) tylko w Perlu. Ale raczej zadziała.
open( FILE, "$ARGV[1]" ) or die("can't open file $ARGV[1]: $!"); while( <FILE>) {print $_ if( /^\s*$ARGV[0]/);}
pierwszy argument to znaki po jakich rozpoznawać linie do wyrzucenia (początkowe spacje i tabulatory ignorowane), drugi argument to nazwa pliku wejściowego. Wynik działana wyrzuca na STDIO (ekran). Jak chesz do pliku to użyj przekierowania ">". Przykład (nazwa skryptu to perl.pl):
perl parse.pl ala sciezka/do/pliku >plik_wynikowy
zapisze do pliku "plik_wynikowy" wszystkie linie nie rozpoczynające się od "ala".
-- mogor