The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
XML-parseerfout in perl bishweshwar UNIX for Advanced & Expert Gebruikers 1 05-30-2007 11:59 PM
HTML parsing door PERL avik1983 Programmeren en Shell Scripting 3 02-23-2007 09:25
Parsing en om waarden van variabelen Rekha Programmeren en Shell Scripting 3 08-01-2006 11:39
PERL - Parsing Crystal Reports srinivay Programmeren en Shell Scripting 0 05-12-2005 08:55
Conversie van bash parseren perl script? cstovall Programmeren en Shell Scripting 2 10-13-2004 11:33 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-16-2008
Figaro figaro is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2007
Posts: 268
Perl: parseren variabelen

Ik heb de volgende script:

Code:
#!/usr/bin/perl -w

@files = <*.csv>;
foreach $file (@files) {
  open(FH, $file);
  my @dt = split(/_|.csv/, $file);
  while (<FH>) { 
    chomp;
    print $dt[1] . $dt[2] . ",$_\n";
  }
  close(FH);
}

Dit script leest in alle CSV-bestanden in de huidige directory en drukt de datum, tijd en volledige inhoud op het scherm.

Een bestandsnaam bestaat uit een naam, een datum een tijd en een suffix ". Csv". Dus een bestandsnaam kan worden foo_20080909_120345.csv
Bij het runnen van deze, het @ dt array geldt:
- $ Dt [0] \u003d "foo"
- $ Dt [1] \u003d 20080909
- $ Dt [2] \u003d 120345

Dus lijn 9 (print $ dt [1]. $ Dt [2]. ", $ _ \ N") levert lijnen van de volgende:
"20080909 120345 ,[... rest van het record ...]"
waar moet opleveren:
"2008-09-09 12:03:45 ,[... rest van het record ...]"

Hoe geef ik ("-") streepjes en dubbele punten (":") op de juiste plaatsen zonder gebruik te gekunsteld code, zoals:
substr ($ dt [1], 0, 4). "-". substr ($ dt [1], 4, 2). "-". substr ($ dt [1], 6, 2)
en dat is alleen voor de datum.

Thanks in advance
  #2 (permalink)  
Old 07-16-2008
Diabolist Diabolist is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2002
Posts: 44
Hier zijn mijn bestanden:


Code:
bar_20081009_113023.csv
foo_20080909_120345.csv
munge_20061231_010020.csv

Hier is het script:

Code:
#!/usr/bin/perl -w

@files = <*.csv>;
foreach $file (@files) {
  open(FH, $file);
  my @dt = ($file =~ /^(\w+)_(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})\.csv$/);
  while (<FH>) {
    chomp;
    print "$dt[1]-$dt[2]-$dt[3] $dt[4]:$dt[5]:$dt[6],$_\n";
  }
  close(FH);
}

Hier is de output:

Code:
# ./test.pl
2008-10-09 11:30:23,bar1
2008-10-09 11:30:23,bar2
2008-09-09 12:03:45,foo1
2008-09-09 12:03:45,foo2
2006-12-31 01:00:20,munge1
2006-12-31 01:00:20,munge2

Ik weet zeker dat het kan worden opgeruimd een beetje. Ik ben niet een erg goed met perl
  #3 (permalink)  
Old 07-16-2008
Figaro figaro is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2007
Posts: 268
Dat werkt uitstekend, dank je.
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 12:31.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0