Article View: pl.comp.lang.perl
Article #39759Re: Wyciąganie danych z pliku
From: tomjas
Date: Mon, 18 Oct 2004 13:57
Date: Mon, 18 Oct 2004 13:57
65 lines
3286 bytes
3286 bytes
W artykule <ckvo6p$hra$1@news.lublin.pl> Grzegorz Szyszlo napisał(a):
> tomjas wrote:
>> Witam.
>> Mam plik z danymi, który wygląda mniej więcej tak:
>>
>> [ciach]
>> bla bla bla
>> cos_innego
>> X(1)=2.83662 5.75662 0.65738
>> .
>> .
>> X(10)=-4.62785 -1.63096 7.7584E-02
>> jakies_inne_dane
>> [ciach]
>>
>> Z tego pliku potrzebuję wydobyć serie współrzędnych. Jak z całego pliku
>> wydobyć linie z tymi współrzędnymi - to już wymyśliłem:
>>
>> perl -ne "print if /X/" plik>wyniki
>>
>> ale jak pozbyć się z początku znaków X(n)= to nie mam zielonego pojęcia.
>
> uzyc regexa? np. tak:
> perl -ne "print $1 if /X\(\n+\)=(.*)/" plik>wyniki
>
Niestety nie działa. Tzn wykonuje się bez błedu ale tworzy pusty plik.
Oczywiście próbowałem też z d zamiast n - jak w poście poniżej.
>> Problem komplikuje to iż nie są one jednakowej długości czyli dla n>9
>
> print to jest to samo co print $_ .
> ale jak w regexie cos otoczysz nawiasami, jest przypisywane kolejno
> do $1, $2 $3 itd, co tez mozesz wypisac.
>
>> pojawia się kolejne pole. A gdyby jeszcze po wyciągnięciu tych
>> współrzędnych udało się je ładnie sformatować - żeby każda liczba miała
>> określone położenie i długość pola to byłoby super:)
>
> tez sie da :) ale wszystko sie z deka komplikuje:
>
>
> perl -ne "print substr($1.(' ' x 10,0,10),substr($2.(' ' x 10,0,10),substr($3.(' ' x 10,0,10),"\n" if /X\(\n+\)=(\S*)\s(\S*)\s(\S*)/" plik>wyniki
> (linia sie pewnie polamala, posklejaj sobie)
>
>
> wartosc 10 to przykladowa szerokosc pola, liczby sa dosuwane do lewej, uzupelniane spacjami z prawej.
> btw. zamiast substr mozna uzyc length :) mozliwe ze bedzie ciut szybciej.
>
Tu natomiast wywala błąd:
syntax error at -e line 1, near "substr(."
Execution of -e aborted due to compilation errors.
pewnie jakiegoś nawiasiku brakuje bo widzę, że jest brak jednego
zamykającego przy substr - próbowałem dodawać go w różne miejsa ale to
jeszcze więcej błędów wywala.
Może to jakieś banalne błędy ale jestem początkujący więc nie wiem co
jest źle (tu i w przypadku poprzednim).
Pozdrawiam.
--
------------------------------------------------------
[ tomjas@WYTNIJTOpoczta.onet.pl ] [ GG# 4513130 ]
[ Registered Linux User# 309932 ] [ICQ# 173190698 ]
------------------------------------------------------
Technical Details
Message-ID:
<slrn.pl.cn7ite.3jr.tomjas@perrun.ha1rtr.agh.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<slrn.pl.cn6mjp.mcv.tomjas@perrun.ha1rtr.agh.edu.pl> <ckvo6p$hra$1@news.lublin.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: tomjas <tomjas@WYTNIJTOpoczta.onet.pl> Newsgroups: pl.comp.lang.perl Subject: Re: Wyciąganie danych z pliku Date: Mon, 18 Oct 2004 13:57:08 +0000 (UTC) Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 65 Message-ID: <slrn.pl.cn7ite.3jr.tomjas@perrun.ha1rtr.agh.edu.pl> References: <slrn.pl.cn6mjp.mcv.tomjas@perrun.ha1rtr.agh.edu.pl> <ckvo6p$hra$1@news.lublin.pl> NNTP-Posting-Host: ha2rtr.agh.edu.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1098107828 24188 149.156.124.18 (18 Oct 2004 13:57:08 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Mon, 18 Oct 2004 13:57:08 +0000 (UTC) X-User: tomjas1 User-Agent: slrn/0.9.7.4 (pl-1.4.3) (Linux/2.4.26 (i686)) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit