Kaip išskleisti kelios eilutės iš didelio EGA ataskaitą?

J

Jacobus

Guest
labas.kiekvienas.

Turiu didelį EGA Pranešti apie keletą giga baitų
ir man reikia išskirti kai kuriuos iš ataskaitos eilutes, pavyzdžiui, per pastaruosius 100 linijų ir tada atsispausdinti linijų atvirkštine tvarka į kitą failą.

Kadangi kai liniją, jis gali būti apie 1m baitas duomenų, atrodo labai neefektyviai naudoti fseek suraskite failą, perskaitykite eilutę ir tada įrašyti failą pažodžiui.

Taigi aš noriu sužinoti, jei yra efektyvesnis būdas išgauti pastaruosius 100 linijos iš EGA failą?
Ir dėl mano platforma ir žinių apribojimo, aš tik galima naudoti C arba Perl realizuoti tokio scenarijaus.

Thanks a lot!

 
Nežinau, ką reiškia "EDA ataskaita" arba "eilučių".Tai tekstinis failas?

Jei tai tekstinis failas, pabandykite rasti efektyvų versija UNIX / Linux / GNU "uodega" naudingumas.Jis Rezultatų pastaruosius keletą eilučių iš failo.Tuomet vamzdis ji per kažką panašaus į "TAC" pakeisti linijas.Kai "uodegoje" redakcijos įtraukti linijos atvirkštinis variantas.

Galite atidaryti failą dvejetainiu režimu (galbūt greičiau, nei tekstiniu režimu), po to fseek (fp, 0, SEEK_END) iki bylos pabaigos, tada naudokite fseek () ir fread () į žingsnį atgal ir perskaityti keletą kilobaitų tuo metu, kol rasite norimą 100 eilučių.I'm guessing tai, kaip "uodega" darbus.

Jei jūs žinote apie tai, kiek baitų reikia nuskaityti iš failo pabaigoje, tuomet galite pradėti jį dvejetainiu režimu, fseek (FP, ofsetinė, SEEK_END) į tą padėtį, tada fread () visa galine į atmintį .Tai turėtų vykti labai greitai.

 
echo47 rašė:

Nežinau, ką reiškia "EDA ataskaita" arba "eilučių".
Tai tekstinis failas?Jei tai tekstinis failas, pabandykite rasti efektyvų versija UNIX / Linux / GNU "uodega" naudingumas.
Jis Rezultatų pastaruosius keletą eilučių iš failo.
Tuomet vamzdis ji per kažką panašaus į "TAC" pakeisti linijas.
Kai "uodegoje" redakcijos įtraukti linijos atvirkštinis variantas.Galite atidaryti failą dvejetainiu režimu (galbūt greičiau, nei tekstiniu režimu), po to fseek (fp, 0, SEEK_END) iki bylos pabaigos, tada naudokite fseek () ir fread () į žingsnį atgal ir perskaityti keletą kilobaitų tuo metu, kol rasite norimą 100 eilučių.
I'm guessing tai, kaip "uodega" darbus.Jei jūs žinote apie tai, kiek baitų reikia nuskaityti iš failo pabaigoje, tuomet galite pradėti jį dvejetainiu režimu, fseek (FP, ofsetinė, SEEK_END) į tą padėtį, tada fread () visa galine į atmintį .
Tai turėtų vykti labai greitai.
 
Jacobus rašė:

labas.
kiekvienas.Kadangi kai liniją, jis gali būti apie 1m baitas duomenų, atrodo labai neefektyviai naudoti fseek suraskite failą, perskaitykite eilutę ir tada įrašyti failą pažodžiui.Taigi aš noriu sužinoti, jei yra efektyvesnis būdas išgauti pastaruosius 100 linijos iš EGA failą?

Ir dėl mano platforma ir žinių apribojimo, aš tik galima naudoti C arba Perl realizuoti tokio scenarijaus.Thanks a lot!
 
Aš niekada nesinaudojo tai - jums greičiausiai gali gauti failo dydis tiesiogiai per fstat (), jei nėra neteisinga ar kitos, kurios suteikia jums stat struktūrą turintis failo dydžio ir eikite tiesiai į poziciją norite, fseek ().
Windows čia GetFileSize () funkciją ir kiti, tačiau aš nesu įsitikinęs taikymą šiuo atveju - turi būti patikrintas.

Btw, kai fseek yra įvykdytas, OS neviršijama per visą failo turinį, bet ionodes - failo antraštes iki paskutinio taško, kai pozicijos vertė.Taigi, visos funkcijos sutrikimu negalima vartoti ilgą laiką užbaigti.I got tha neteisinga - reikia eilutės nėra padėtis Ignoruoti šį pranešimą.
Paskutinį kartą redagavo Meno dėl sausis 13, 2006 2:50; edited 2 kartus iš viso

 
banh rašė:Jacobus rašė:

labas.
kiekvienas.Kadangi kai liniją, jis gali būti apie 1m baitas duomenų, atrodo labai neefektyviai naudoti fseek suraskite failą, perskaitykite eilutę ir tada įrašyti failą pažodžiui.Taigi aš noriu sužinoti, jei yra efektyvesnis būdas išgauti pastaruosius 100 linijos iš EGA failą?

Ir dėl mano platforma ir žinių apribojimo, aš tik galima naudoti C arba Perl realizuoti tokio scenarijaus.Thanks a lot!
 
ką aš turiu galvoje tai galite rasti failo splitter programa siekiama sumažinti savo failą.

"Google" byla splitter ":
http://www.google.com.sg/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL, GGGL :2005-09, GGGL: en & q = file splitter

 
Aarrgh!Aš ką tik sužinojau, kad fseek (... SEEK_END) nėra garantuojamas dirbti.Ji sako, kad į ANSI C standarto.Ji gali dirbti, kai kuriose sistemose, bet, matyt, nėra nešiojamųjų būdas C nustatyti failo dydis (ar siekti savo tikslu), ne skaitant visa tai.Atrodo, kad reikia jį išbandyti ir pamatyti, ar atlikti tam tikrus operacinės sistemos specialios prieigos prie bylos skambinti jums padėti.

Arba eiti ieškoti "uodega".

 
Tokiu atveju mano pasiūlymas padėtų - rasti failo pabaigoje failo dydis tada stengtis, kad positioin.

 
Ačiū už visus jūsų pasiūlymus!
Norėčiau turėti tam pabandyti.

 

Welcome to EDABoard.com

Sponsor

Back
Top