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
Perl: Åpning av et filehandle men ikke får noe tilbake fra det Smiling Dragon Shell programmering og Skripting 8 08-16-2008 03:40
ls kommando for å skrive FIFO av innhold (eller perl) jerardfjay Shell programmering og Skripting 1 04-06-2006 03:01
Åpne filer saarshad001 UNIX for Dummies Spørsmål og svar 3 11-28-2003 12:42
Åpne filer AJA UNIX for Dummies Spørsmål og svar 4 11-10-2003 11:25
Åpning Perl perleo Shell programmering og Skripting 2 08-26-2002 10:41

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 08-31-2008
Raynon Raynon is offline
Registrert bruker
  
 

Bli Dato: Sep 2006
Sted: SG
Innlegg: 350
Åpne filer og sjekke innholdet i Perl

Hei Alle,

Jeg trenger noen ekspert hjelp til å utføre følgende i Perl.
Jeg har en kode nedenfor, men det spiller, ikke synes å fungere. Kan noen ekspert gi meg noen råd?

Nedenfor er kravene
1) Åpne flere filer tildelt en matrise @ filer. Merk at filene er alltid navngitt med termen "fikser". Eksempler på disse filnavnene er "false1_sorts", "false_sorts", "true1_sorts", "true_sorts" osv.

2) Søk etter innhold "32N6524" i åpnet filen. Hvis innholdet eksisterer, legger filen til en annen tabell som @ arr_x. Her er filer som dette innholdet eksisterer er true1_sorts "," true_sorts "

Code:
#!/usr/bin/perl

@FILES = ( *sorts );
print "@FILES ";
print "\n";

foreach $summary_x ( @FILES ) {
        open(FH, '< $summary_x') or die $!;
                while( <FH> ) {
                chomp;      
                if ( /32N6524/ ) {
                       push (@arr_x, $summary_x)
                };
                close FH;
};
};


print "@arr_x ";
Forventet utdata:

false1_sorts false_sorts true1_sorts true_sorts
true1_sorts true_sorts

Sist endret av Raynon; 08-31-2008 på 07:39..
  #2 (permalink)  
Old 08-31-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Til glob den jokertegn, bruk <* sorterer> istedenfor * sorterer som gjør noe helt annet enn du ønsker (du bør ha sett at det ble skrevet ut som * main:: sorterer som er en globbed variabelnavnet, ikke en globbed filnavnet.
  #3 (permalink)  
Old 09-01-2008
Raynon Raynon is offline
Registrert bruker
  
 

Bli Dato: Sep 2006
Sted: SG
Innlegg: 350
Hi Era,

Jeg har lagt på <* sorterer> men likevel dette (print "@ arr_x"setningen betyr; ikke skrives ut.
Kan du hjelpe meg?


Code:
#!/usr/bin/perl

@FILES = ( <*sorts> );
print "@FILES ";
print "\n";

foreach $summary_x ( @FILES ) {
        open(FH, '< $summary_x') or die $!;
                while( <FH> ) {
                chomp;      
                if ( /32N6524/ ) {
                       push (@arr_x, $summary_x)
                };
                close FH;
};
};


print "@arr_x ";
  #4 (permalink)  
Old 09-01-2008
Raynon Raynon is offline
Registrert bruker
  
 

Bli Dato: Sep 2006
Sted: SG
Innlegg: 350
Hei, Jeg tror jeg vet hvor er feil.
Jeg savner ut duoble Sitat i åpen uttalelse.

åpen (FH, "<$ Summary_x") Eller dø $!;
  #5 (permalink)  
Old 09-01-2008
Raynon Raynon is offline
Registrert bruker
  
 

Bli Dato: Sep 2006
Sted: SG
Innlegg: 350
Hi Era,

Hva ville være syntaksen hvis jeg trenger å matche et begrep som består av flere ord for eksempel ordet "min personlig FIILE".
Jeg prøvde å bruke under koden men det visste; ikke.
Kan du hjelpe meg?

Code:
if ( /MY PERSONAL FILE/ ) {
                       push (@arr_x, $summary_x)
                };
Innhold etter filen "true_sorts" er nedenfor.
Ser ut som om begrepet jeg vil kampen ikke på første linje i innholdet, og der vant; ikke være noen match.

Code:
32N6524

MY PERSONAL FILE

Sist endret av Raynon; 09-01-2008 på 10:56..
  #6 (permalink)  
Old 09-02-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Du har avslutningskoden spenne på feil sted, er du lukker filen etter å ha lest en linje fra det.

Det hjelper å se logikken hvis du konsekvent indent et nivå dypere etter en innledende stramme, og redusere innrykk på den avsluttende spenne.

Code:
#!/usr/bin/perl

@FILES = ( <*sorts> );
print "@FILES ";
print "\n";

foreach $summary_x ( @FILES ) {
        open(FH, "< $summary_x") or die $!;
        while( <FH> ) {
                chomp;      
                if ( /32N6524/ ) {
                       push (@arr_x, $summary_x);
		       last;
                }
	}
	close FH;
};


print "@arr_x ";
Jeg har lagt til vare som en mindre optimalisering, men ellers er dette bare har stramme flyttet til rett sted, og enkle anførselstegn endret til doble anførselstegn, og korrigert hakk.

Den, det chomp synes ikke å være nødvendig, men kanskje du vil utvide skriptet til et punkt der du vil linjene være chomped.

Samsvarende på ting med mellomrom på det er ikke et problem.

Sist endret av æra; 09-02-2008 på 03:13.. Grunn: Bemerkning på Useless Bruk av Chomp
  #7 (permalink)  
Old 09-02-2008
Raynon Raynon is offline
Registrert bruker
  
 

Bli Dato: Sep 2006
Sted: SG
Innlegg: 350
Hi Era,

Thks mye for råd!
Jeg vet hvor jeg er galt.
Closed Thread

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 11:17.


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