Avatar billede jensdreier Nybegynder
11. august 2004 - 16:29 Der er 7 kommentarer og
1 løsning

Søge og slette linjer i en txt fil med ASP..

Hejsa .... jeg står og har brug for et script som kan rydde op i en KÆMPE log fil.

Log filen i txt format ser nogenlunde sådan her ud ..

(ip'et) - Connection ok
(ip'et) - Connection Failt
(ip'et) - Connection ok
osv osv

der er ca 12000 blanede linjer i den txt med henholdsvis overstående. Jeg skal på en eller anden måde have bygget noget der kan "splitte" linjerne med "connection ok" fra dem med "connection failt" og gemme dem i hver sin txt. så jeg får en txt med "connection failt" og en med "connection ok" . . Men jeg ANER ikke hvor jeg skal begynde, jeg er helt blank da jeg aldrig har rodet med txt filer med asp. nogen der kan "lede mig på vej" ? Så dette vil blive et færdigt projekt ?
Avatar billede eagleeye Praktikant
11. august 2004 - 17:16 #1
Sådan her:


<%
orgfilnavn = Server.MapPath("log.txt")
okfilnavn = Server.MapPath("log_ok.txt")
failfilnavn = Server.MapPath("log_fail.txt")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set orgfil = FSO.OpenTextFile(orgfilnavn)
'8 betyder for Appending så en tilføre til enden af filen skal du overskrive filen skal der stå 2
Set okfil = FSO.OpenTextFile(okfilnavn,8,true)
Set failfil = FSO.OpenTextFile(failfilnavn,8,true)

do while not orgfil.AtEndOfStream
  str = orgfil.ReadLine
  if instr(1,str,"connection ok",1) > 0 then
    okfil.writeline (str)
  end if
  if instr(1,str,"connection fail",1) > 0 then
    failfil.writeline (str)
  end if
loop

Set orgfil = Nothing
Set okfil = Nothing
Set failfil = Nothing
Set fso = Nothing
%>


Til orientering kan man ikke slette linjer fra en text fil.
Avatar billede jensdreier Nybegynder
11. august 2004 - 21:17 #2
hejsa .. jeg får den her fejl

Microsoft VBScript compilation error '800a0400'

Expected statement

/split/split.asp, line 3

okfilnavn = Server.MapPath("log_ok.txt")

har rodet lidt med det .. og syntes ikke det vil fungere uanset hvad jeg gør
Avatar billede eagleeye Praktikant
12. august 2004 - 00:30 #3
Jeg kan ikke se noget galt med den linje. Hvis du copy/paster direkte ind i din editor så prøv at paste det som HTML kode, eller copy/paste det ind i notepad først. Jeg har set eksperten har tilføjet nogle usynlige karakter som driller.
Avatar billede jensdreier Nybegynder
12. august 2004 - 17:18 #4
Okay .. jamen fik det til at fungere .. super fedt ! ! ! ! MEN JEG Har lige et sidste spørgsmål.. du skal nok få flere pont for det.

Jeg har en type log fil mere hvor der står en masse info fx..

ip 123.123.123.13
sendt via http://yadayada bla bla bla
d. 12-01-01
Klokken 1103
Avatar billede jensdreier Nybegynder
12. august 2004 - 17:23 #5
glem det det står ovenover. en halvfærdig post
Okay .. jamen fik det til at fungere .. super fedt ! ! ! ! MEN JEG Har lige et sidste spørgsmål.. du skal nok få flere pont for det.

Jeg har en type log fil mere hvor der skal soteres nogle linjer fra. 

ip 123.123.123.13
sendt via http://yadayada bla bla bla
d. 12-01-01
Klokken 1103
code 3
---------------------------------------------
ip 999.999.993.13
sendt via http://yadayada bla bla bla
d. 12-01-01
Klokken 1104
code 18

I denne log fil er det således at der er mange forskællige "code" kunne godt tænke mig at få kopieret der hvor der står "code 18" og fem linjer op og smidt det i en anden txt .. så alle "code 18" i den log kommer i en fil for sig..
Avatar billede eagleeye Praktikant
12. august 2004 - 19:30 #6
Så kan du prøve at lave koden sådan her:


<%
orgfilnavn = Server.MapPath("logfil.txt")
code18filnavn = Server.MapPath("code18.txt")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set orgfil = FSO.OpenTextFile(orgfilnavn)
'8 betyder for Appending så en tilføre til enden af filen skal du overskrive filen skal der stå 2
Set code18fil = FSO.OpenTextFile(code18filnavn,8,true)

dim codeArr(5)
for i=0 to ubound(codeArr)
  codeArr(i)=""
next
do while not orgfil.AtEndOfStream
  str = orgfil.ReadLine
  'flyt gamle linjer og gem den nye linje
  for i = 0 to ubound(codeArr)-1
    codeArr(i) = codeArr(i+1)
  next
  codeArr(ubound(codeArr))=str
  if instr(1,str,"code 18",1)=1 then
    for i=0 to ubound(codeArr)
      code18fil.writeline codeArr(i)
    next
  end if
loop

Set orgfil = Nothing
Set code18fil = Nothing
Set fso = Nothing
%>
Avatar billede eagleeye Praktikant
29. august 2004 - 00:10 #7
Fik du det til at virke?  Det kunne være rart med lidt feedback :)
Avatar billede jensdreier Nybegynder
07. september 2004 - 17:11 #8
hov nej den sidste virker ikke lige som jeg regnede med .,.. men får heller ikke brug for det alligevel.. sry for så sent svar.. point er dine
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester