The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
gebrek aan inzicht> vervelende fout jzacsh Programmeren en Shell Scripting 21 4 weken geleden 04:10 PM
fout in de productie van perl script namishtiwari Programmeren en Shell Scripting 2 06-15-2009 06:02
Fout met ftptail perl script Cooki3s! UNIX voor Dummies Questions & Answers 2 05-04-2009 12:46
Help inzicht syntaxisfout Issue warlock129 Programmeren en Shell Scripting 6 04-26-2009 08:02 PM
Perl script error pietie Programmeren en Shell Scripting 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-03-2009
Ex-Capsa's Avatar
Ex-Capsa Ex-Capsa is offline VIP Member  
VIP Lid
  
 

Join Datum: maart 2009
Locatie: Canada / Quebec / Montreal
Posts: 29
Hulp nodig begrip perl script error

Ik gevraagd deze site eerder deze week en heb een goed antwoord voor een perl
Script dus maakte ik dit script van wat begrepen uit de antwoorden
Maar nu heb ik een fout en ik ben boomstronk. Het is niet correct de parse
Output het blijft op de eerste lijn Mijn $ f2 en herdrukken in een eindeloze lus
Ik weet zeker dat er betere manieren dan dit. Maar dit is wat ik wil oplossen
Dan

Dit is het script


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);
}
}


Laatst bewerkt door vidyadhar85; op 07.03.2009 06:46 PM.. Reden: Code tags toegevoegd
  #2 (permalink)  
Old 07-04-2009
KevinADC KevinADC is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 731
Ik weet niet wat al die "shift" lijnen zijn daar voor, maar je lus probleem is hier:

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);
}
}

Je moet het verwijderen van de lus "terwijl":


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);

}


Ik weet niet of dat zal je code iets nuttig, maar hopelijk zal lopen en je verder kan aanpassen indien nodig.
  #3 (permalink)  
Old 07-05-2009
Ex-Capsa's Avatar
Ex-Capsa Ex-Capsa is offline VIP Member  
VIP Lid
  
 

Join Datum: maart 2009
Locatie: Canada / Quebec / Montreal
Posts: 29
Dank u voor het antwoord

Ik wil het aan loop, maar niet eindeloos op de eerste regel van file2.
File2 heeft 24.000 records gesplitst in 10 velden Ik heb het werk
Nu maar ik ben met 2 scripts om het te doen een uittreksel van de registers van de
Andere wedstrijden hen. Wat ik probeer te doen is te combineren
In een

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

Join Date: Jan 2008
Posts: 731
Als u niet wilt dat het lus eindeloos verwijder vervolgens de 'loop terwijl' Ik liet je te verwijderen.

Post ---------- updated at 02:25 pm ---------- Vorige update was om 02:15 pm ----------

Misschien is dit w2hat je wilt doen:


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

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 02:14 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0