Article View: pl.comp.lang.perl
Article #39756Re: Wyciąganie danych z pliku
From: Grzegorz Szyszlo
Date: Mon, 18 Oct 2004 06:34
Date: Mon, 18 Oct 2004 06:34
49 lines
2485 bytes
2485 bytes
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
> 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.
znik.
> Zatem proszę o jakąś podpowiedź.
> Z góry dzięki i pozdrawiam.
>
Technical Details
Message-ID:
<ckvo6p$hra$1@news.lublin.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!lublin.pl!news.lublin.pl!not-for-mailReferences:
<slrn.pl.cn6mjp.mcv.tomjas@perrun.ha1rtr.agh.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!lublin.pl!news.lublin.pl!not-for-mail From: Grzegorz Szyszlo <znik@wbc.lublin.pl> Newsgroups: pl.comp.lang.perl Subject: Re: Wyciąganie danych z pliku Date: Mon, 18 Oct 2004 08:34:18 +0200 Organization: lubman Lines: 50 Message-ID: <ckvo6p$hra$1@news.lublin.pl> References: <slrn.pl.cn6mjp.mcv.tomjas@perrun.ha1rtr.agh.edu.pl> NNTP-Posting-Host: user.wbc.lublin.pl Mime-Version: 1.0 X-Trace: news.lublin.pl 1098081305 18282 212.182.104.10 (18 Oct 2004 06:35:05 GMT) X-Complaints-To: abuse@news.lublin.pl NNTP-Posting-Date: Mon, 18 Oct 2004 06:35:05 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030721 Debian/1.4-1.nobse.2 X-Accept-Language: pl, en-us In-Reply-To: <slrn.pl.cn6mjp.mcv.tomjas@perrun.ha1rtr.agh.edu.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit