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: 7028 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rasssha

Član broj: 32970
Poruke: 11
195.178.35.*



Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 15:54 - pre 239 meseci
Probaću ponovo, a sutra ću da uploadujem primer fajla, pa da vidimo konkretno na primeru.

Ponovo hvala,

P.s. ne bih hteo da ova moja tema služi kao razlog međusobnih prepirki, ali SVAKA pomoć mi je dobrodošla.
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 16:05 - pre 239 meseci
Inače, pošto imaš tako velik broj fajlova, a VBScript usporava, verovatno zbog podizanja Cscript.exe (ne vidim šta drugo), ako ti Perl nije prihvatljiv, moraćeš da malo prepraviš onu moju skriptu tako da sama nalazi fajlove. Ne bi trebalo biti teško (hint: FSO).

Pozdrav

UPDATE:
Evo rašo, da ne bude da sam te ostavio na cedilu skroz :)

Citat:
Set fso = CreateObject("Scripting.FileSystemObject")
Do While Not WScript.StdIn.AtEndOfStream

InputFile = WScript.StdIn.ReadLine
Set f = fso.OpenTextFile(InputFile, 1)
Input = f.ReadAll
f.Close

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
Loop


I teraj sa:

dir /s /b *.txb | cscript //nologo skripta.vbs >> izlaz.txt

Trebalo bi da je brže od onog prvog. Stvar je, kao što sam i napisao, što se svaki put podizao cscript, a ovako smo to sveli na samo jedno podizanje. Nije šampion brzine, ali mislim da je prihvatljivo. Vidi sam.

Ako nije dovoljno brzo, kupi brži kompjuter, lakše ti nego da učiš Perl :))) ili da čekaš čitav dan da se neko igra i testira pa onda poredi to sa nečim što sam ja postavio nakon 10 minuta.

(Primećujem da je i Časlav uradio isto, koristio je find, za razliku od prošlog puta gde je koristio baš For petlju. Zato je verovatno njegovo rešenje i kasnilo malo :) Pošteno, nema šta. Časlave, za ovakvo nepošteno poređenje, imaš od mene lično crveni karton za duže. Ja takvo što ne bih uradio ni na Advocacy forumu).


[Ovu poruku je menjao degojs dana 29.08.2004. u 14:30 GMT]
Commercial-Free !!!
 
Odgovor na temu

rasssha

Član broj: 32970
Poruke: 11
195.178.35.*



Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 16:58 - pre 239 meseci
@dgojs

radi, radi!!!

ali sada shvata specifičnost slučaja.
Recimo ovako. Startstring mi se nalazi u redu iznad recorda koji bih da "izvučem" što dovodi do "izvlačenja" jednog nepotrebnog reda.

Postavimo pitanje ovako. Da li je moguće (pošto sam već rekao da je forma dokumenata uvek ista) (recimo da uvek ima 65 reda sa po 70 znakova) da se izvuče record sa određene pozicije. Recimo da izvlači uvek rekord koji se nalazi u 8 redu na poziciji od 60 do 70 (znači samo ta 10 slova), zatim da izvlači rekord iz 12 reda na 15-25 poziciji (znači opet 10 slova)


Hvala Vam na utrošenom vremenu
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?29.08.2004. u 17:14 - pre 239 meseci
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
Do While Not WScript.StdIn.AtEndOfStream

InputFile = WScript.StdIn.ReadLine
Set f = fso.OpenTextFile(InputFile, 1)

For i = 1 to 7
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,61,10)
WScript.Stdout.Write Text & ","
For i=9 to 11
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,16,10)
WScript.Stdout.Write Text & ","
f.Close
Loop


A poterao bi sa:
dir /s /b *.txb | cscript //nologo skripta2.vbs >> izlaz2.txt

Nisam ni ovo testirao, nego sa jednim fajlom :) Inače, malčice sam promenio ono prethodno, tako da budeš siguran da imaš zadnju verziju skriptice :)

Ima nešto što nije jasno: kad kažeš pozicije 60-70, to nije 10 već 11 znakova. 60, 61, 62, .. 70.
Isto za pozicije 15-25, to je 11 znakova: 15,16,17..25.

Ja sam u skripti stavio 61 i 16 za početne znakove i čitam 10 znakova.
Lako ćeš naći gore u skripti te brojeve (61 i 16) i promeniti ih u ono što treba. Broj koji sledi iza (10 u oba slučaja) je koliko znakova čitamo.

Opet, nije šampion brzine, ali mislim da služi OK.

Pozdrav.

[Ovu poruku je menjao degojs dana 29.08.2004. u 14:19 GMT]
Commercial-Free !!!
 
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 17:31 - pre 239 meseci
hmm, upravu si stavrno je 11 znakova....
U svakom slučaju hvala na brzom odgovoru, a sad je red na meni da eksperimentišem, a sutra ću da probam već na konkretnom primeru (pošto su mi fajlovi na poslu).


Hvala još jednom.
 
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 19:55 - pre 239 meseci
Radi zaključenja poređenja, drugo Dejanovo rešenje je sasvim zadovoljavajuće, treba mu svega 26 sekundi (pod istim onim uslovima). Imao bih tu još ponešto da kažem, ali ne bi bilo u redu zatrpavati ovu temu, to ću lično sa „sudijom“ Gojsevićem :)
 
Odgovor na temu

rasssha

Član broj: 32970
Poruke: 11
194.247.218.*



Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?22.09.2004. u 14:34 - pre 238 meseci
Opet ja posle nekog vremena
Konačno sam uspeo da napravim nešto što bi mi bilo od koristi (naravno uz veliku vašu pomoć) Skript izgleda ovako:


Citat:


Set fso = CreateObject("Scripting.FileSystemObject")
Do While Not WScript.StdIn.AtEndOfStream

InputFile = WScript.StdIn.ReadLine
Set f = fso.OpenTextFile(InputFile, 1)

For i = 1 to 3
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,77,2)
WScript.Stdout.Write Text & ";"

For i = 4 to 4
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,4,31)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,46,66)
WScript.Stdout.Write Text & ";"
For i = 5 to 5
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,28,10)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,68,10)
Wscript.Stdout.Write Text & ";"
For i = 6 to 6
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,46,7)
WScript.stdout.Write Text & ";"
Text = Mid(Input,69,10)
WScript.stdout.Write Text & ";"
For i = 7 to 7
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,68,12)
WScript.stdout.Write Text & ";"
For i = 8 to 8
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,16,55)
WScript.stdout.Write Text & ";"
For i = 9 to 14
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,18,3)
WScript.stdout.Write Text & ";"
Text = Mid(Input,40,17)
WScript.stdout.Write Text & ";"
Text = Mid(Input,69,10)
WScript.stdout.Write Text & ";"
For i = 16 to 20
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,58,8)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,69,10)
WScript.Stdout.Write Text & ";"
For i = 21 to 26
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,27,10)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,46,10)
WScript.Stdout.Write Text & ";"
Text = Mid(Input,63,20)
WScript.Stdout.Write Text & ";"
For i = 27 to 40
f.ReadLine
Next
Input = f.ReadLine
Text = Mid(Input,11,3)
WScript.Stdout.Write Text & ";"
f.Close
Loop



I pokrećem ga sa

dir /s /b *.txt | cscript.exe /nologo skript.vbs >> izlaz.txt

E sad, on od svih tekstualnih fajlova lepo izvlači podatke, ali ih "lepi" u nastavku.
Ono što meni treba je da svi podaci iz jednog fajla budu u jednom redu, a kad počne da izvlači iz drugog fajla, da krene u sledeći red...
Unapred zahvalan[/quote]
 
Odgovor na temu

rasssha

Član broj: 32970
Poruke: 11
194.247.218.*



Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?22.09.2004. u 14:54 - pre 238 meseci
Da, i ako neko zna varijantu kako "podeliti" tekstualni fajl
(u kome se nalaze više naloga) recimo posle 57 linija teksta
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: "Izvlačenje" podataka iz tekstualnih fajlova?31.10.2004. u 20:49 - pre 237 meseci
Ubaci jedno WScript.Stdout.WriteLine posle f.Close. Ako neće probaj sa WScript.Stdout.Write vbCrLf.
Commercial-Free !!!
 
Odgovor na temu

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

Strane: 1 2

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

Postavi temu Odgovori

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