![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt. |
Több, UNIX és Linux fórum témák Ön által talált Hasznos
|
||||
| Szál | Thread Starter | Fórum | Válaszok | Utolsó hozzászólás |
| regex kérdés | xiamin | Shell programozás és Scripting | 3 | 03-05-2009 02:53 AM |
| Perl regex help - egyezési zárójelekben | CVP | Shell programozás és Scripting | 7 | 02-27-2009 05:38 PM |
| Hogyan tudom ezt a sort szalag segítségével perl regex. | ramky79 | Shell programozás és Scripting | 1 | 03-18-2008 12:10 PM |
| regex kérdés | arushunter | Shell programozás és Scripting | 8 | 01-04-2007 05:49 PM |
| regex kérdés | rocketkids | A UNIX a dummies Kérdések és válaszok | 6 | 02-12-2004 05:49 AM |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
Perl regex kérdés
Én a következő kódot: Kód:
#!/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);
}
Van ebben a redundancia kód, mert először az összes kép végződik. "CSV" (3. sor), és ezt elemzi a fájlnév (line 6) keres karakter és számjegy. Hogyan tudom megváltoztatni 3. sor egy reguláris kifejezés, így a 6 sorban lehet távolítani, és a tömb @ dt meg ott? |
|
||||
|
Nem lehet. És tényleg nincs elbocsátás a glob <> először megállapítja az összes fájl. Csv meghosszabbításról így nyitott nekik, a regexp majd elemzi azokat strings (a fájlneveket) a kivonat konkrétabb információk.
|
|
||||
|
Nos, nem jön ki, de ez nem lehet olyan hatékony, mint amit el lehet, és még kevésbé hatékonyak, akkor a viszonyítási alap a kódokat tudni, ami tényleg jobb. Kód:
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);
}
Valószínűleg ez a regexp igények finomítása: / ^ (\ w +). \ d (6) \. csv $ / Mi az a pötty ott után (\ w +)? |
|
||||
|
Köszönöm a választ, és nem kísérletezik ezen egy kicsit. A teljesítmény nyereség (vagy veszteség) is kisebb. Am még mindig dolgozik a beépített időzítőt, de a különbözet nem pusztán másodperc (ha van ilyen), a teljes test mintegy 200 kép és kombinált igénylő elérhetik a 40 MB méretet.
És a pont (.) Az a része, a fájl neve: W + hogy a szabványos fájlnév és d (6), hogy a 24hr idején, amikor letölt. Tehát egy fájl lenne a neve, mint például: scores.234506.csv Last edited by Figaro; 07/17/2008 at 02:09 PM.. |
![]() |
| Könyvjelzõk |
| Címkék |
| perl, Perl regex, regex |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|