![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| errore di analisi XML in perl | bishweshwar | UNIX e avanzata per utenti esperti | 1 | 05-30-2007 11:59 PM |
| HTML parsing da PERL | avik1983 | Shell scripting e di programmazione | 3 | 02-23-2007 09:25 AM |
| Parsing e ottenere i valori delle variabili | Rekha | Shell scripting e di programmazione | 3 | 08-01-2006 11:39 AM |
| PERL - Parsing di Crystal Reports | srinivay | Shell scripting e di programmazione | 0 | 05-12-2005 08:55 AM |
| Conversione di bash script per il parsing perl? | cstovall | Shell scripting e di programmazione | 2 | 10-13-2004 11:33 PM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Perl: l'analisi delle variabili
Ho il seguente script: Codice:
#!/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);
}
Questo script si legge in tutti i csv nella directory corrente e stampa la data, l'ora e il contenuto completo di schermo. A nome del file è composto da un nome, una data, un tempo e un suffisso ". Csv". Così il nome di un file potrebbe essere foo_20080909_120345.csv Su questa esecuzione, l'array @ dt vale: - $ Dt [0] \u003d "foo" - $ Dt [1] \u003d 20080909 - $ Dt [2] \u003d 120345 Quindi, la linea 9 (print $ dt [1]. $ Dt [2]. "$ _ \ N") i rendimenti delle seguenti linee: "20080909 120345 ,[... resto del record ...]" dove dovrebbe rendimento: "2008-09-09 12:03:45 ,[... resto del record ...]" Come faccio a inserire i due punti e trattini ("-") (":") al posto giusto, senza utilizzare il codice semplificato, come: substr ($ dt [1], 0, 4). "-". substr ($ dt [1], 4, 2). "-". substr ($ dt [1], 6, 2) e che è solo per la data. Grazie in anticipo |
|
||||
|
Ecco il mio file: Codice:
bar_20081009_113023.csv foo_20080909_120345.csv munge_20061231_010020.csv Ecco lo script: Codice:
#!/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);
}
Ecco il risultato: Codice:
# ./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 Sono sicuro che può essere ripulito un po '. Io non sono un ottimo con perl
|
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|