![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| xml erreur d'analyse en perl | bishweshwar | UNIX for Advanced & Expert Users | 1 | 05-30-2007 10:59 PM |
| HTML parsing par PERL | avik1983 | De programmation et de script Shell | 3 | 02-23-2007 09:25 AM |
| Analyse et d'obtenir des valeurs de variables | Rekha | De programmation et de script Shell | 3 | 08-01-2006 10:39 AM |
| PERL - Analyse de Crystal Reports | srinivay | De programmation et de script Shell | 0 | 05-12-2005 07:55 AM |
| Conversion de l'analyse de script bash à perl? | cstovall | De programmation et de script Shell | 2 | 10-13-2004 10:33 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Perl: l'analyse de variables
J'ai le script suivant:
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);
}
Un nom de fichier est composé d'un nom, une date, un temps et un suffixe ". Csv". Ainsi, un nom de fichier peut être foo_20080909_120345.csv Sur cette course, le tableau tient @ dt: - $ Dt [0] \u003d "foo" - $ Dt [1] \u003d 20080909 - $ Dt [2] \u003d 120345 Ainsi, la ligne 9 (print $ dt [1]. $ Dt [2]. ", $ _ \ N"), on obtient des lignes de ce qui suit: "20080909 120345 ,[... reste du record ...]" où il doit apporter: "2008-09-09 12:03:45 ,[... reste du record ...]" Comment puis-je saisir les tirets et les virgules ("-") (":") au bon endroit, sans contrainte en utilisant un code tel que: substr ($ dt [1], 0, 4). "-". substr ($ dt [1], 4, 2). "-". substr ($ dt [1], 6, 2) et ce n'est que pour la date. Merci d'avance |
|
||||
|
Voici mes fichiers:
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 ![]() |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|