[vastaus aiempaan viestiin]
Kirjoittaja: | Petri Palmu |
---|---|
Sähköposti: | - |
Päiväys: | 5.2.2006 14:19 |
Kimmo Vehkalahti kirjoitti 3.2.2006 15:14 : >En tiedä miksi haet ratkaisua "DOS"-tasolla. Useimmat asiat voi >kuitenkin tehdä kätevämmin Survossa. > Ongelmaksi muodostuu muokattavien tiedostojen erit. leveys, > 1000 merkkiä (johtuen pitkistä teksteistä ja itse kenttien lukumäärästä). Rivejä saattaa olla 50 000 - 100 000, mikä sinänsä ei ole Survon toimituskentälle ongelma. Jotenkin tuntuu, että "LINEDEL" kannattaisi toteuttaa "pinnan alla", kuten TXTCONV,... Kun en muuta keksinyt, niin väänsin muutaman rivin Perl:iä ongelmani ratkaisemiseksi. (tulkin voi imuttaa ilmaiseksi http://www.perl.org/ ). Koodi ei varmaankaan ole vähäisestä perl-kokemuksestani johtuen paras mahdollinen, mutta näyttäisi suorittavan sille asetetun tehtävän. Toki tuota voisi kehitellä huomattavasti yleisempiin tilanteisiin... Perl-skripti SAVEP CUR+1,CUR+20,poista.pl #!c:\Perl\bin -w # use strict; my $first_line = <STDIN> ; # print "$first_line"; # kenttien nimirivi my $count = 0 ; # laskuri poistetuille riveille my $out_file = "count_deleted.txt" ; # # ne rivit pois (tai skipataan), jotka alkavat "DATE" sanalla while (<STDIN>) { my $line = $_ ; chomp($line); # poistaa mahd. rivinvaihdon rivin lopussa if($line =~ "^DATE"){ # säännöllinen lauseke DATE-sana rivin alussa $count = $count +1 ; next } print "$_" ; } open (OUT, ">$out_file") or die "Can't open $out_file: $!\n" ; print OUT "$count" ; close OUT # ..................... ESIM: Tiedostojen yhdistelyn jälkeen: SAVEP CUR+1,CUR+13,txt1 DATE X Y kkk kkk DATE kkk k kk DATE X Y kk kk k kk DATE k k k k DATE X Y k k k k k k kk k k DATE X Y DATE X Y Perl skriptin ajo: >perl poista.pl < txt1 > txt2 Tulokset: LOADP txt2,CUR+2 DATE X Y kkk kkk DATE kkk k kk kk kk k kk DATE k k k k k k k k k k kk k k LOADP count_deleted.txt 4 Tarkoituksenani ei ollut millään tavoin "välttää" tekemästä tätä vaihetta Survolla, kaiketi sen olisi pystynyt tekemään useammalla tavalla, vaikkapa luuppaamalla FILE SAVE txt_i TO DATA , jossa i = 1,2,...,n . Joskin melkoisen pitkien tekstikenttien lukemisessa olisi saattanut tulla hankaluuksia vastaan. t. Petri
Vastaukset: |
---|
Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!