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
mangel på forståelse> irriterende feil jzacsh Shell programmering og Skripting 21 4 uker siden 04:10
feil i produksjonen av Perl-skript namishtiwari Shell programmering og Skripting 2 06-15-2009 06:02
Perl Feil med ftptail script Cooki3s! UNIX for Dummies Spørsmål og svar 2 05-04-2009 12:46
Hjelp forståelse syntaksfeil Issue warlock129 Shell programmering og Skripting 6 04-26-2009 08:02
Perl-skript-feil pietie Shell programmering og Skripting 4 10-15-2008 10:05

Reply
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-03-2009
Ex-Capsa's Avatar
Ex-Capsa Ex-Capsa is offline VIP Member  
VIP-medlem
  
 

Bli Date: Mar 2009
Bosted: Canada / Quebec / Montreal
Innlegg: 29
Trenger du hjelp til å forstå perl script feil

Jeg ønsket dette nettstedet tidligere denne uken og fikk et godt svar på en perl
Script så jeg laget dette skriptet fra hva forsto fra svarene
Men nå har jeg en feil og jeg stubben. Det gjør analysere ikke riktig
Output den står på første linje My $ F2 og opptrykk i en uendelig løkke
Jeg er sikker på at det finnes bedre måter enn dette. Men dette er hva jeg ønsker å løse
Dan

Dette skriptet

Code:
 
#!/usr/local/bin/perl -w
use strict;
 
die "Usage: $0 <file1> <file2> <file_out>\n" unless $#ARGV==2;
my ($file1, $file2, $file3) = @ARGV;
 
open my $f1_in, $file1 or die "Could not open $file1\n";
open my $f2_in, $file2 or die "Could not open $file2\n";
open(my $f3_out, '>', $file3) or die "Could not open $file3: $!\n";
 
while (my $f1 = <$f1_in>) {
my $f2 = <$f2_in>;
$f1 =~ s/^\s+|\s+$//g;
$f2 =~ s/^\s+|\s+$//g;
 
#$\ = "\n";
my $FS = '|';
$, = ',';
 
my $Fld0 = shift;
my $Fld1 = shift;
my $Fld2 = shift;
my $Fld3 = shift;
my $Fld4 = shift;
my $Fld5 = shift;
my $Fld6 = shift;
my $Fld7 = shift;
my $Fld8 = shift;
my $Fld9 = shift;
my $Fld10 = shift;
 
while ($f2){
($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/[|\n]/,$f2, -1);
print $f3_out ($Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);
}
}

Sist endret av vidyadhar85; 07-03-2009 kl 06:46.. Reason: Kode koder lagt
  #2 (permalink)  
Old 07-04-2009
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
Jeg er ikke sikker på hva alle disse "skift" linjene er der for, men løkke problemet er her:
Code:
while ($f2){
($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/[|\n]/,$f2, -1);
print $f3_out ($Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);
}
}
Du må fjerne "mens" loop:

Code:
($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/[|\n]/,$f2, -1);
print $f3_out ($Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);

}

Jeg vet ikke om det vil gjøre koden din gjør noe nyttig, men forhåpentligvis vil den kjøre og du kan videre endre etter behov.
  #3 (permalink)  
Old 07-05-2009
Ex-Capsa's Avatar
Ex-Capsa Ex-Capsa is offline VIP Member  
VIP-medlem
  
 

Bli Date: Mar 2009
Bosted: Canada / Quebec / Montreal
Innlegg: 29
Takk for svaret

Jeg vil den skal sløyfe, men ikke i det uendelige på første linje i fil2.
Fil2 har 24000 postene delt i 10 felt jeg har det fungerer
Nå men jeg bruker 2 skript til å gjøre det én pakke ut registrerer
Andre kamper dem. Det jeg prøver å gjøre er å kombinere dem
Til én

Thk
  #4 (permalink)  
Old 07-05-2009
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
Hvis du ikke vil at den skal sløyfe uendelige deretter fjerne "loop mens jeg viste deg å fjerne.

---------- Post oppdatert kl 02:25 ---------- forrige oppdatering var ved 02:15 ----------

Kanskje dette er w2hat du ønsker å gjøre:

Code:
#!/usr/local/bin/perl
use warnings;
use strict;
 
die "Usage: $0 <file1> <file2> <file_out>\n" unless $#ARGV==2;
my ($file1, $file2, $file3) = @ARGV;
 
open my $f1_in, $file1 or die "Could not open $file1\n";
open my $f2_in, $file2 or die "Could not open $file2\n";
open(my $f3_out, '>', $file3) or die "Could not open $file3: $!\n";
 
while (my $f1 = <$f1_in>) {
   my $f2 = <$f2_in>;
   $f1 =~ s/^\s+|\s+$//g;
   $f2 =~ s/^\s+|\s+$//g;
 
   my($Fld0,$Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10) = split(/\|/,$f2, -1);
   print $f3_out join(',',$Fld0, $Fld1, $Fld2, $Fld3, $Fld4, $Fld10);
}
Reply

Hugseliste

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 09:38.


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