![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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 |
|
||||
|
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
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|