Strona 2 z 2 PierwszyPierwszy 12
Pokaż wyniki 11 do 14 z 14

Temat: Skrypt przeszukujacy dwa pliki tekstowe i dopisujacy zadane znaki do drugiego pliku

  1. #11
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Zasada dzialania jest prosta:


    1. Sprawdz ilosc parametrow i albo pokaz komunikat o uzyciu albo idz dalej
    2. wczytaj pierwszy plik - tested.txt
    2a. jesli linia nie zaczyna sie od cyfry to ja pomin (wiec jak spacja na poczatku to pomin linie)
    2b. podziel na pola w miejscu gdzie jest co najmniej jeden znak bialy (spacja/tabulacja)
    2c. zapamietaj wartosc z ostatniej kolumny pod 'etykietka' z pierwszej kolumny
    3. wczytaj drugi plik - modify.txt
    3a. pomin linie nie zaczynajace sie od cyfry
    3b. wez wszystkie cyfry z poczatku linii (az nie trafisz na znak nie bedacy cyfra) i zapamietaj cala linie jak jest pod etykietka tej wlasnie cyfry z poczatku
    4. wczytaj plik nodes-skip.txt
    4a. pomin linie nie zaczynajace sie od cyfry
    4b. usun z punktu 2 (wartosci do testowania) linie ktora ma ta sama wartosc w 1 kolumnie co wlasnie wczytana wartosc z pliku - ta linia nie bedzie testowana
    5. zapytaj o Y
    6. na tym co pozostalo z danych zebranych w pkt. 2 sprawdzaj czy wartosc ostatniej kolumny jest wieksza od zadanego Y - jesli tak to dodaj '** ' na poczatku linii
    7. dla wszystkich linii wczytanych z drugiego pliku (niektore maja juz '**') zapisz wynik do pliku wyjsciowego zgodnie z numeracja wezlow (rosnaco)...

    Jak sam widzisz mozesz dac wiecej spacji miedzy kolumnami albo zastapic je tabulacjami dla poprawy czytelnosci 'na oko' :-) W tej wersji wazne jest to aby we wszystkich plikach linie zaczynaly sie od cyfr (lub wielocyfrowych liczb calkowitych) i wartosci z pierwszej kolumny byly unikatowe (tzn nie bylo 2 takich samych) i to tyle...

    To co widzisz jako blad to jest wlasnie warning a nie blad - mowi on tyle, ze gdzies (prawdopodobnie we wczytanych danych wejsciowych) byl blad, zostaly one puszczone przez parser i zapamietane jako pusty ciag... doslownie mowiac, zmienna nie ma wartosci.
    Jak usuniesz '-w' z pierwsze linii to tego nigdy wiecej nie zobaczysz ale czasami sie to przydaje do sledzenia dlaczego program nie chodzi... a ten chodzi.

    Pamietaj ze podales dokladny opis formatu danych i tego program sie trzyma... i tak na wyrost jest dzielenie kolumn na 1+ spacjach/tabulacjach zamiast na sztywno na pojedynczej spacji :-)

  2. #12

    Domyślnie ?

    hmm
    a mozesz mi powiedziec co zmienic zeby skrypt czytal wszytkie linie nawet ze spacjami na poczatku?

  3. #13
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Jasne ze moge :-) Ja po kazdym chomp() przy czytaniu pliku dodalbym
    Kod:
    s/^\s+//;
    co po prostu wywali wszystkie spacje/tabulacje z poczatku linii ale nadal odrzuci linie zawierajace nie-cyfry na poczatku....

    Tylko zastanawia mnie dlaczego masz taki dziurawy format danych... raz w ta, raz w tamta... Dalej juz odsylam do man perlfunc() lub perldoc perlfunc (bo wiem ze dziala pod winda)...
    Ostatnio edytowane przez TQM : 07-05-2006 - 19:41

  4. #14

    Thumbs up Dzieki wielkie :-D

    :-) dzieki za pomoc , ten skrypt jest mi naprawde bardzo potrzebny :-D to ulatwi mi obrabianie plikow :-) dzieki ze poswieciles mi czas :-)))

Strona 2 z 2 PierwszyPierwszy 12

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj