![]() |
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| XML-Parsing-Fehler in perl | bishweshwar | UNIX für Fortgeschrittene und Experten | 1 | 05-30-2007 10:59 PM |
| Parsen von HTML-PERL | avik1983 | Shell Programmierung und Scripting | 3 | 02-23-2007 09:25 AM |
| Parsing und Werte der Variablen | Rekha | Shell Programmierung und Scripting | 3 | 08-01-2006 10:39 AM |
| PERL - Parsing Crystal Reports | srinivay | Shell Programmierung und Scripting | 0 | 05-12-2005 07:55 AM |
| Die Umwandlung von bash-Skript zum Parsen von Perl? | cstovall | Shell Programmierung und Scripting | 2 | 10-13-2004 10:33 PM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Perl: Parsing Variablen
Ich habe das folgende Skript:
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);
}
Ein Dateiname besteht aus einem Namen, ein Datum, eine Zeit und eine Endung ". Csv". So einen Dateinamen könnte foo_20080909_120345.csv Auf diesem läuft die @ dt Array gilt: - $ Dt [0] \u003d "foo" - $ Dt [1] \u003d 20080909 - $ Dt [2] \u003d 120345 So Linie 9 (print $ dt [1]. $ Dt [2]. ", $ _ \ N") ergibt die folgenden Zeilen: "20080909 120345 ,[... Rest des Satzes ...]" , wo es sollte Ertrag: "2008-09-09 12:03:45 ,[... Rest des Satzes ...]" Wie gebe ich Bindestriche ("-") und Doppelpunkte (":") an den richtigen Stellen, ohne künstliche Code wie: substr ($ dt [1], 0, 4). "-". substr ($ dt [1], 4, 2). "-". substr ($ dt [1], 6, 2) und das ist nur für das Datum. Vielen Dank im Voraus |
|
||||
|
Hier sind meine Dateien:
Code:
bar_20081009_113023.csv foo_20080909_120345.csv munge_20061231_010020.csv 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);
}
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 ![]() |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|