🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #39759

Re: Wyciąganie danych z pliku

#39759
From: tomjas
Date: Mon, 18 Oct 2004 13:57
65 lines
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-mail
References: <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