The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-16-2008
Figaro figaro is offline
Registrert bruker
  
 

Bli Date: Jan 2007
Innlegg: 267
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);
}
Det er redundans i denne koden som den første etter alle filer som slutter med ". Csv" (linje 3) og deretter analyserer filename (linje 6) leter etter tegn og tall. Hvordan kan jeg endre linje 3 i et vanlig uttrykk, slik at linje 6 kan fjernes og array @ dt fastsettes der?
  #2 (permalink)  
Old 07-16-2008
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
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.
  #3 (permalink)  
Old 07-16-2008
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
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);
}
dette regexp trolig behov avgrensning:

/ ^ (\ w +). \ d (6) \. csv $ /

hva er punktum i det etter (\ w +)?
  #4 (permalink)  
Old 07-17-2008
Figaro figaro is offline
Registrert bruker
  
 

Bli Date: Jan 2007
Innlegg: 267
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..
  #5 (permalink)  
Old 07-17-2008
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
punktum bør escaped deretter likhet med de andre punktum i regexp:

min% filer \u003d map (/ ^ (\ w +) \. \ d (6) \. csv $ /; $ _ \u003d> $ 1) <*. csv>;
  #6 (permalink)  
Old 07-17-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Sep 2006
Innlegg: 2521
Hvis filen er alltid navngitt som scores.234506.csv, kan du bare bruke delt på punkter og deretter få array element 1. Det burde være nummeret ditt. Enklere enn regexp.
  #7 (permalink)  
Old 07-17-2008
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
split () er en regexp.
Closed Thread

Hugseliste

Tags
perl, perl regex, regex

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 06:24.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0