Toon posts:

shell script / awk | ascii > comma seperated

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na uitvoerig bewerken van een zeer grote onoverzichtelijke logfile kom ik tot het volgende resultaat:

alarm
EM NLDC02T TRK 992
2001/01/07
07:15:34
processed
50050305
error
remoteTransmissionError
Have restaged with remote trunk


Ik heb 1 lange ascii-file waarin steeds blokjes van dit soort informatie in voorkomen (de blokjes zijn gescheiden door twee enters).

Nu wil ik hier graag het volgende van maken (komma gescheiden 'records'):

alarm,EM NLDC02T TRK 992,2001/01/07,07:15:34,processed,50050305,error,remoteTransmissionError,Have restaged with remote trunk,

Zodat ik de gegevens zo 1-2-3 kan downloaden van mijn unixbak en kan importeren in Excel of iets dergelijks.

Weet iemand een methode om dit te doen (moet vanuit de shell kunnen, met awk, shell commands, of iets dergelijks, perl mag ook).

Alvast bedankt!!

PS. (het gaat niet om de data, maar om het bewerken van de data... mocht je niet volgen wat voor rare meldingen het zijn)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Lees faq betreffende het groeten,


ongeveer zo:
code:
1
2
3
4
5
6
7
8
9
10
11
open infile
open uitfile
string=leeg
doe tot einde file
  Lees regel in.
  voeg regel aan string toe indien het niet alleen een return is.
  zijn er twee returns achter elkaar geweest
     schrijf string naar uitfile
     maar string leeg
  einde zijn
einde doe

zou'k zeggen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Grum
  • Registratie: Juni 2001
  • Niet online
of gebruik perl :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 07 januari 2002 17:37 schreef Grum_ het volgende:
of gebruik perl :)
Dat was een perl variant, Ik ga toch echt niet de reguliere expressie maken waarmee hij het kan doen, of uitleggen hoe het met een reguliere expressie kan. ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
Ik heb nu o.a. de volgende code:

open(FILE, "</log/logfile");
@contents = <FILE>;
close FILE;

$regel = 0;

foreach $line (@contents)
{
....



Hoe kan ik controleren of er een lege regel is?
met:
if ($line == "") { (of ($line eq "") natuurlijk .. ;) )
...
}

lukt het niet ?!

Bedankt!