![]() |
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| regex spørsmålet | xiamin | Shell programmering og Skripting | 3 | 03-05-2009 02:53 |
| Perl regex hjelp - matchende parentes | cvp | Shell programmering og Skripting | 7 | 02-27-2009 05:38 |
| Hvordan kan jeg kle denne linjen bruker perl regex. | ramky79 | Shell programmering og Skripting | 1 | 03-18-2008 12:10 |
| regex spørsmålet | arushunter | Shell programmering og Skripting | 8 | 01-04-2007 05:49 |
| regex spørsmålet | rocketkids | UNIX for Dummies Spørsmål og svar | 6 | 02-12-2004 05:49 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Perl regex spørsmålet
Jeg har følgende kode:
Code:
#!/usr/bin/perl -w
@files = <*.csv>;
foreach $file (@files) {
open(FH, $file) || die("Error: Cannot open file $file for reading.");
my @dt = ($file =~ /^(\w+).(\d{6})\.csv$/);
while (<FH>) {
print "@dt[0] $_\n";
}
close(FH);
}
|
|
||||
|
Du kan ikke. Og det er virkelig ingen redundans som glob <> første finner alle filer med. Csv forlengelse slik at du kan åpne dem, de regexp Deretter analyserer disse strengene (Filnavnene) for å få mer spesifikk informasjon.
|
|
||||
|
Vel, jeg kom opp med dette, men det kan ikke bli mer effektiv enn hva du hadde, og kan være mindre effektive, du må benchmark både koder for hva som er virkelig bedre.
Code:
my %files = map {/^(\w+).\d{6}\.csv$/; $_ => $1} <*.csv>;
print Dumper \%files;
foreach my $file (keys %files) {
open(FH, $file) || die("Error: Cannot open file $file for reading.");
while (<FH>) {
print "$files{$file} $_\n";
}
close(FH);
}
/ ^ (\ w +). \ d (6) \. csv $ / hva er punktum i det etter (\ w +)? |
|
||||
|
Takk for svaret ditt, og har vært eksperimentere med dette litt. Ytelse gevinst (eller tap) er små. Am fortsatt arbeider med en innebygd timer, men differensial er bare sekunder (hvis noen) på hele kroppen med ca 200 filer og kombinert krever 40 MB.
Og punktum (.) Er den delen av filnavnet w + som standard filnavn og d (6) er den 24hr tiden av tidspunktet for nedlasting. Så en fil som ville ha et navn som: scores.234506.csv Sist endret av Figaro; 07-17-2008 på 01:09.. |
![]() |
| Hugseliste |
| Tags |
| perl, perl regex, regex |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|