The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Perl: Öppna en filehandle men inte få något tillbaka från det Smiling Dragon Shell-programmering och Skript 8 08-16-2008 03:40
ls-kommandot för att skriva ut FIFO av innehållet (eller perl) jerardfjay Shell-programmering och Skript 1 04-06-2006 03:01
Öppna filer saarshad001 UNIX for Dummies Frågor & Svar 3 11-28-2003 12:42
Att öppna filer AJA UNIX for Dummies Frågor & Svar 4 11-10-2003 11:25
Öppet Perl perleo Shell-programmering och Skript 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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 08-31-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Att öppna filer och kontrollera innehållet i Perl

Hej Alla,

Jag behöver lite expert hjälp med att utföra följande Perl.
Jag har ett nummer under men det gör, inte verkar fungera. Kan någon expert ge mig några råd?

Nedan visas de krav
1) Öppna flera filer till en array @ filer. Observera att filerna alltid namnges med "slag". Exempel på dessa filnamn är "false1_sorts", "false_sorts", "true1_sorts", "true_sorts" etc

2) Sök efter innehåll "32N6524" i den öppnade filen. Om innehållet finns, lägga filen på en annan samling som @ arr_x. Här filerna att detta material är true1_sorts "," true_sorts "

Kod:
#!/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 ";
Förväntad Effekt:

false1_sorts false_sorts true1_sorts true_sorts
true1_sorts true_sorts

Senast redigerad av Raynon; 08-31-2008 vid 07:39..
  #2 (permalänk)  
Old 08-31-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Att Glob jokertecken, användning <* sorterar> i stället för * slag som gör något helt annat än vad du vill (du skulle ha sett att den fick tryckas as * viktigaste: slag som är en globbed variabelns namn, inte ett globbed filnamnet.
  #3 (permalänk)  
Old 09-01-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Hej Era

Jag har lagt på <* sorterar> men detta (print "@ arr_x"uttalande gör, inte få skrivas ut.
Kan ni hjälpa till?


Kod:
#!/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 (permalänk)  
Old 09-01-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Hej, jag tror jag vet vart är misstag.
Jag saknar de duoble citerar i öppen uttalande.

öppen (FH, "<$ Summary_x") Or die $!;
  #5 (permalänk)  
Old 09-01-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Hej Era

Vad skulle syntax om jag behöver för att matcha ett begrepp som består av flera ord till exempel begreppet "EGET FIILE".
Jag försökte använda den under koden men det gick, inte jobba.
Kan ni hjälpa till?

Kod:
if ( /MY PERSONAL FILE/ ) {
                       push (@arr_x, $summary_x)
                };
Innehåll i filen "true_sorts" finns nedan.
Ser ut som om termen Jag vill matchen inte på första raden av innehållet, då det vann, inte vara någon match.

Kod:
32N6524

MY PERSONAL FILE

Senast redigerad av Raynon; 09-01-2008 vid 10:56..
  #6 (permalänk)  
Old 09-02-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Du har sluttaggen stag på fel ställe, du stänga filen efter att ha läst en linje från den.

Det bidrar till att se logiken om du konsekvent strecksatsen en nivå djupare efter en öppnande stag och minska indrag till balansdagens stag.

Kod:
#!/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 ";
Jag har lagt till sist som en mindre optimering, men i övrigt är detta bara har stag flyttas till rätt plats, och enkla citationstecken ändras till dubbla citationstecken, och rättat indenteringen.

Den chomp verkar inte vara nödvändigt, men du kanske vill utöka manus till den punkt där du vill att linjerna skall chomped.

Matchning på grejer med mellanslag det inte är ett problem.

Senast redigerad av era; 09-02-2008 vid 03:13.. Orsak: Anmärkning om Useless Användning av Chomp
  #7 (permalänk)  
Old 09-02-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Hej Era

Thks mycket för råd!
Nu vet jag om jag har fel.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 07:18.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0