The UNIX and Linux Forums  


Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 07-16-2008
Figaro figaro is offline
Regisztrált felhasználó
  
 

Join Date: Jan 2007
Posts: 268
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?
  #2 (permalink)  
Old 07-16-2008
KevinADC KevinADC is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 731
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.
  #3 (permalink)  
Old 07-16-2008
KevinADC KevinADC is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 731
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 +)?
  #4 (permalink)  
Old 07-17-2008
Figaro figaro is offline
Regisztrált felhasználó
  
 

Join Date: Jan 2007
Posts: 268
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..
  #5 (permalink)  
Old 07-17-2008
KevinADC KevinADC is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 731
A dot kell majd megszökött, mint a többi pont a regexp:

my% fájlok \u003d map (/ ^ (\ w +) \. \ d (6) \. csv $ / $ _ \u003d> $ 1) <*. csv>;
  #6 (permalink)  
Old 07-17-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Sep 2006
Hozzászólások: 2.554
Ha a fájl nevét mindig hasonló nevű scores.234506.csv, akkor csak használja megoszlani pontok, majd tömbelem 1. Ennek kell a számot. Könnyebb, mint a reguláris.
  #7 (permalink)  
Old 07-18-2008
KevinADC KevinADC is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 731
split () egy regexp.
Closed Thread

Könyvjelzõk

Címkék
perl, Perl regex, regex

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 09:04 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0