Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

"Izvlačenje" podataka iz tekstualnih fajlova?

[es] :: Skript jezici :: "Izvlačenje" podataka iz tekstualnih fajlova?

Strane: 1 2

[ Pregleda: 7002 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rasssha

Član broj: 32970
Poruke: 11
194.247.218.*



Profil

icon "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 13:03 - pre 239 meseci
Ljudi, pomagajte!!!!

Treba mi neki programčić ili neko "rešenje" koje "izvlači" određene podatke iz teksutalnih dokumenata. Imam 50000+ tekstualnih dokumenata sa identičnom formom.
E, sad. Treba mi program pomoću kojeg ću moći da iz svakog dokumenta iz određenog polja izvlači podatke (npr. start string, end string i da "izvuče" sve između) I tako u svakom dokumentu po 20-ak recorda, i tako 50000 i više puta.

Normalno da mogu to posle da exportujem u CSV ili tako nešto....


Unapred zahvalan
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 13:18 - pre 239 meseci
Nađi nekog programera, može i početnika, trebao bi ovo da ti odradi očas posla. Posle kada podatke poslažeš u CSV format lako ćeš ih "uvući" gde treba.

Ili postavi ovde tačan format fajlova sa detaljnim opisom kako treba da izgleda CSV fajl pa ćemo da vidimo.
Commercial-Free !!!
 
Odgovor na temu

markom
Marko Milivojević
Network Engineer
Google
Mountain View

Član broj: 18427
Poruke: 4227
*.singidunum.net

Sajt: https://markom.rs


+16 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 13:23 - pre 239 meseci
Da, ovo je relativno jednostavno... S tim da, mislim, nije za ovaj forum. Zato ću ovo da prebacim u Scripting jezike.

Degojs, hoćemo da vidimo kako izgleda std_nix vs. std_windows rešenje istog problema? :-)

Marko.
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 14:36 - pre 239 meseci
Može, s tim da mi daš malo fore da pogledam regexp :) Nikad ih nisam koristio, a izgleda mi da ovde idu. (I javi ako sam na krivom putu, da ne gubim vreme, onda odmah priznajem da ne znam ni kako bih krenuo :)
Commercial-Free !!!
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 14:46 - pre 239 meseci
Code:
Do While Not WScript.StdIn.AtEndOfStream
   Input = Input & WScript.StdIn.ReadAll
Loop

Set regEx = New RegExp
regEx.Pattern = "STRINGSTART.*?STRINGEND"
regEx.IgnoreCase = False
regEx.Global = True

Set objMatches = regEx.Execute(Input)
For Each objMatch in objMatches
  s = ObjMatch.Value
  s = Replace(s,"STRINGSTART", "")
  s = Replace(s,"STRINGEND", "")
  WScript.Stdout.Write s & ","
Next


Nije kratko, ali evo meni trebalo koliko, 10-tak minuta da to napišem. Ozbiljno, ne koristim uopšte regexp niti sam majstor za ovakve stvari (skriptovanje). Još i nisam znao kako da izbacim STRINGSTART i STRINGEND iz privremenih rezultata pa sam koristio Replace funkciju da ih zamenim sa praznim stringom :) U stvari najviše vremena mi je i uzeo ovaj "komplikovani" regex. Da ne bih i dalje otezao i maltretirao se, na kraju sam i upotrebio onu Replace funkciju :)

Ako ovo sačuvaš pod imenom skripta.vbs i pokreneš sa

type ulaz.txt | cscript //nologo skripta.vbs > izlaz.txt

dobićeš izlaz koji tražimo za taj jedan ulazni fajl. Npr. ako je ulazni fajl ulaz.txt:

STRINGSTARTMarkoSTRINGENDblablablalbalballalbalbalalaa
bbbbbbbbbbSTRINGSTARTDejanSTRINGEND

u izlaz.txt dobivamo:
Marko,Dejan,


Ne vidim da je problem da se stavi u FOR petlju u DOS-u kao onomad sa Časlavom, koja bi pronašla sve potrebne fajlove ispod nekog foldera, i prosledila ih ovoj skripti, itd. Naravno, kao i tamo, koristili bi >> umesto > za dodavanje na kraj postojećeg izlaznog fajla.

Toliko od mene, nije bilo teško, ne sumnjam da je na nix sistemu moguće sve strpati u jednu liniju. Nemam pojma, možda bi moglo i ovde još kraće, meni i ovako izgleda OK prilično, s obzirom koliko imam znanja za ovakve stvari i koliko vremena sam utrošio.

Pozdrav :)

UPDATE:
evo rasssha, dobio si rešenje, sve iz inata :) Kucaj u command promptu:

FOR /R . %i IN (*.txb) DO type "%i" | cscript.exe //nologo skripta.vbs >> izlaz.txt

Ovo će krenuti od trenutnog foldera u kom se nalaziš (tu stavi i skripta.vbs fajl) i tražiti sve *.txb fajlove u tom i folderima ispod. Proslediće ih onoj skripti i izlaz na kraju imaš u izlaz.txt u tom istom folderu.


Commercial-Free !!!
 
Odgovor na temu

markom
Marko Milivojević
Network Engineer
Google
Mountain View

Član broj: 18427
Poruke: 4227
*.singidunum.net

Sajt: https://markom.rs


+16 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 17:35 - pre 239 meseci
Da, ja bih to isto rešavao preko regularnih izraza. Ali sačekajmo prvo format fajla... :-)

Marko.
 
Odgovor na temu

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4132
212.200.53.*

Jabber: damirm | gmail | com
ICQ: 134002435


+13 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?27.08.2004. u 19:33 - pre 239 meseci
Moje *nix resenje stize cim vidim fajl.
E, to se zove zadatak, degojs, a ne ja tebi bazu, ti meni bazu..
JaFreelancer.com
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 12:34 - pre 239 meseci
Offtopic:

@VRider
Neko ko se aktivno bavi skriptovanjem verovatno bi ovo imao gotovo očas posla iz razloga koje sam naveo gore. Ne vidim šta ti je tu posebno, sa ovakvim stvarima? Meni ovo, iskreno, nije nešto zanimljivo, al' ajd malo da se zezamo. Ako ti je do rešavanja ovakvih stvarčica, pogledaj ovaj link, pa izaberi neku od stotina skripta i pokušaj da napišeš rešenje za Linux :)

Još kad neko nabije celo rešenje u jednu liniju, a ja treba da čitam, odmah se naježim :(
Commercial-Free !!!
 
Odgovor na temu

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4132
212.200.53.*

Jabber: damirm | gmail | com
ICQ: 134002435


+13 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 12:54 - pre 239 meseci
Ja bas volim ona ultra_mega_ovo_ono_jedna_linija_znas_sta_ti_pricam_resenja.
JaFreelancer.com
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 13:00 - pre 239 meseci
Sve dok ih ti pišeš, a neko drugi čita, baš super.
Kad se priča okrene onda ćeš da vidiš svu lepotu tih, što Relja reče, "write-only" rešenja.
Commercial-Free !!!
 
Odgovor na temu

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4132
212.200.53.*

Jabber: damirm | gmail | com
ICQ: 134002435


+13 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 13:29 - pre 239 meseci
Na linuxu su ti lajneri redovna pojava, tako da posle nekog vremena naviknes, pa ni ne primecujes koliko je to djubre... (kao i sve na linuxu vise-manje :)).
Pogledaj recimo ovaj:
echo "scale=2; `grep minutes /var/log/messages* | awk -F\ '{ print sum+=$8 }; END { print sum }' | tail -n 1`/120" | bc -l
Ovaj mi vraca podatak o tome koliko sam bio na netu u mesecu (priblizno u satima).
grep -i '10\.1\.1\.1' 192.168.0.254-1.txt | awk -F\ '{ print sum+=$3 }; END { print sum }' | tail -n 1
Ova lepota je uradila isto ono sa logom sto bih inace morao da radim u Excellu ili tako necemu, samo mnogo brze (importovala CSV fajl, i sumirala odredjenu kolonu). Jedina zackoljica je sto ovo moze da radi i za mnogo linija fajla (55k u konkretnom slucaju), dok ce Excell da se "zakaslje".

Ima jos primera...
JaFreelancer.com
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.yubc.net



+27 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 16:48 - pre 239 meseci
Kad me već pominješ, evo Dejane da ti potvrdim nesumnjanje. Prvo, onu tvoju skriptu može da zameni ovakva naredba:

perl -ne 'foreach $i (m/STRINGSTART(.*?)STRINGEND/g) {print "$i,"}'

U ovome nema ničeg opskurnog ili nečitkog. Za opcijom -e sledi citirani perl kôd koji treba da se izvrši, a opcija -n navodi da se kôd izvrši na svakoj liniji ulaza. Sam kôd je udžbenički primer, verovatno zato što sam o perlu počeo da čitam bukvalno juče, biće mi uskoro potreban (baš se zgodno namestilo, a? :)

Drugo, izvlačenje iz svih datoteka rekurzivno može naravno petljom, ali može i kraće, čisto da sa sve prethodnim stane u jednu liniju:

find -iname "*.txt" | xargs perl -ne 'foreach $i (m/STRINGSTART(.*?)STRINGEND/g) {print "$i,"}' >> output.txt

Ovo isto nije nikakav skript-fu, konstrukcija find ... | xargs naredba je uobičajena.

Jedino što o regularnim izrazima nisam počeo da čitam juče. Ne mogu da verujem da ih nikada ne koristiš, pa još kao programer. Pa ja sam se koliko-toliko upoznao sa njima još pre nego što sam prešao na Linuks, trebali su mi npr. za pretraživanje u Ultraeditu :)


[Ovu poruku je menjao Časlav Ilić dana 28.08.2004. u 19:44 GMT]
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 17:22 - pre 239 meseci
Ako se ne varam, perl postoji i na Windowsu što bi značilo da je opet skoro isto. Ne mogu da komentarišem pošto ga ne koristim. Ali ono što sam načuo za perl je da ga BAŠ bije taj glas "write only" jezika. Regularne izraze takođe ne bije glas da su čitki, osim u možda ovakvim trivijalnim slučajevima. Ne sumnjam da su na nix sistemima ovakve stvari češće, pa stoga mi je i jasno da su vam uobičajene.

for ili find, ne vidim neku veliku razliku.

Zaista uopšte ne koristim regularne izraze. Ne znam šta da ti kažem, ali tako je.

Poenta je sledeća: napisano za 10-tak minuta, a da se više bavim ovakvim stvarima, verovatno bih odgovor imao "kao iz topa". Ovako sam još morao i da vidim kako da u VBScriptu čitam stdin i kako da pišem na stdout..

Pozdrav.
Commercial-Free !!!
 
Odgovor na temu

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4132
212.200.53.*

Jabber: damirm | gmail | com
ICQ: 134002435


+13 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 17:32 - pre 239 meseci
Citat:
Ali ono što sam načuo za perl je da ga BAŠ bije taj glas "write only" jezika. Regularne izraze takođe ne bije glas da su čitki, osim u možda ovakvim trivijalnim slučajevima.

Perl mi ne diraj! Po linuxu pljuj koliko hoces, ali perl ne diraj!
JaFreelancer.com
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?28.08.2004. u 17:37 - pre 239 meseci
Ma, nije mi uopšte namera da "pljujem" Perl. Samo kažem šta sam čuo, isto kao i za regex. Da su efikasni, u to ne sumnjam - right tool for the right job.
Commercial-Free !!!
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.yubc.net



+27 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 14:07 - pre 238 meseci
Da ne ulazim u neku veću priču oko toga, ali ako je bio problem sa onim ssh koji može i ne mora biti aktiviran u distribucijama Linuksa (ja još nisam zatekao radnu stanicu gde nije), onda je ovo sa instaliranjem Perla na Vindouz ihaha gora situacija. Odnosno, može se reći da su oba data rešenja prilagođena ciljnim platformama u smislu da se mogu jednostavno upotrebiti (na Linuksu je i Perl obavezno instaliran).

Pomišljah juče da napišem ovo, ali rekoh što bi se zamajavali oko ovakvog problema. Nešto mi đavo nije dao mira, te rekoh da vidim malo kako stoji sa performansama.

Napravih tih 50 hiljada datoteka, u svakoj sa po 20 slogova, i pokrenuh pod Linuksom onu moju skriptu da izvučem iz svih datotetaka samo jedan određeni slog. Ne svih 20, rekoh ostaviću to za kasnije (ali nije došlo na red :) Tih 50 hiljada slogova izvuče za 8 sekundi.

Onda sam svrnuo u IksPe, na onu drugu particiju :) Pokrenuh Dejanovu skriptu, baš onako kako je naveo, i posle 120 sekundi, izvučeno je bilo 705 slogova. Tj. predviđeno vreme za svih 50 hiljada slogova, manje-više, 8400 sekundi.

Za ceo posao, 20 x 50 hiljada slogova, dakle: Linuks + Perl — 3 minuta; Vindouz + Windows Scripting Host (to li je?) — 2 dana.

Pošto je razlika suluda, uopšte ne bih bio iznenađen da je opet u pitanju negativan uticaj mojih bogona („u rukama Linuksovaca ništa na Vindouzu ne radi“), pa nek neko proveri ako ga ne mrzi. Ako je ipak tačno, čovek će morati da traži neko drugo rešenje (npr. da instalira Perl :)
 
Odgovor na temu

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4132
*.ptt.yu

Jabber: damirm | gmail | com
ICQ: 134002435


+13 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 14:18 - pre 238 meseci
8 sekundi?! Da li si profajlirao? Mnogo se to nesto vuce.
JaFreelancer.com
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.yubc.net



+27 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 14:44 - pre 238 meseci
Da, zaboravih da kažem da je mašina na kojoj je probano onaj stari Atlon (Thunderbird) 1,3 GHz, 133 MHz FSB, SDR memorija.
 
Odgovor na temu

rasssha

Član broj: 32970
Poruke: 11
*.smin.sezampro.yu.



Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 14:51 - pre 238 meseci
Hvala na ukazanom trudu,
ali trenutno nemam format fajla koji se traži, ali već koliko sutra ću da upoladujem primer, tako da možete na konkretnom slučaju proveriti skript.
Od ovoga sam probao varijantu koju je ponudio degojs, ali mi konstatno javlja The ilename, directory name, or volume label syntax incorect.
još jednom hvala....
rassha
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 15:06 - pre 238 meseci
Kod mene radi savršeno. Rassso, ako ovo neće, žao mi je, ali negde grešiš. Ako ne uspeš da ovo uspešno poteraš, moraćeš ipak da potražiš nekog :)

Evo ti primera. Skriptu skripta.vbs smo kopirali u w:\temp. U istom folderu (w:\temp) imamo fajl ulaz1.txb, a u podfolderu (w:\temp\novifolder) imamo fajl ulaz2.txb.
Code:

W:\Temp>type ulaz1.txb

asldjfaslkjfdSTRINGSTARTVrider nema pojmaSTRINGENDl;aksjdflk;sajdf;ljas
aslkdfjasl;jdfSTRINGSTARTPazi kad radiSTRINGENDblalbv

W:\Temp>type novifolder\ulaz2.txb

asdfASWAASTRINGSTARTPrimer texta 3STRINGENDl;aksjdflk;sajdf;ljas
aslkdfjasl;jdfsadf
STRINGSTARTPrimer texta 4STRINGENDDEEblalbvdasfsadf
asdfasdfs

W:\Temp>FOR /R . %i IN (*.txb) DO type "%i" | cscript.exe //nologo skripta.vbs >> izlaz.txt

...

W:\Temp>type izlaz.txt
Vrider nema pojma,Pazi kad radi,Primer texta 3,Primer texta 4,


P.S.
Inače VRider, sad ti ostavljam poruku, ali inače ovakve poruke na Advocacy. Da nisi ti fakin fagot kad me toliko voliš i pratiš po forumima? :(

Commercial-Free !!!
 
Odgovor na temu

[es] :: Skript jezici :: "Izvlačenje" podataka iz tekstualnih fajlova?

Strane: 1 2

[ Pregleda: 7002 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.