The UNIX and Linux Forums  


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-skript til å søke tilbake linjer gholdbhurg Shell programmering og Skripting 3 03-18-2008 12:33
Referanse: WebObjects 5.4.1 Referanse iBot UNIX og Linux RSS Nyheter 0 03-11-2008 09:50
Utklippstavla endret 0.2.0 (standardgrenen) iBot Software Releases - RSS Nyheter 0 01-02-2008 05:00
tilbake referanse feil apoorvasharma80 Shell programmering og Skripting 4 08-22-2006 11:25
Referanse todimensjonale array i Perl sub foton Shell programmering og Skripting 5 04-16-2003 05:52

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 03-17-2008
cooldude cooldude is offline
Registrert bruker
  
 

Bli Date: Mar 2006
Innlegg: 44
Perl: Komme tilbake referanse fra s modifier

Min inngang tekst har følgende pattens:

Code:
  func_a(3,
         4,
         5);

Jeg ønsker å erstatte den med denne:

Code:
   
  func_b(3,
         4,
         5,
         6);

Jeg prøver følgende uttrykk, men det fungerer ikke:

Code:
perl -p -e "s/func_a\((.*)?\);/func_b(\1,\n6)/s" < file |more

Noen ideer? Takk.
  #2 (permalink)  
Old 03-17-2008
KevinADC KevinADC is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 731
bruker $ 1 og $ 6 i stedet for \ 1 og \ 6, se om det hjelper. Bruk enkle anførselstegn rundt koden, med mindre du er på vinduer.
  #3 (permalink)  
Old 03-18-2008
cooldude cooldude is offline
Registrert bruker
  
 

Bli Date: Mar 2006
Innlegg: 44
Takk, men det fungerer ikke. Forresten, jeg er ikke bruker \ 6, men heller \ n6.
  #4 (permalink)  
Old 03-18-2008
rajut1984 rajut1984 is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 3
Bruk $ 1 i stedet for \ 1

Endre kommandoen som nedenfor ...
perl -p-e "s / func_a \ ((.*)? \); / func_b \ ($ 1 \ n6 \); / s" <arkiv | mer
  #5 (permalink)  
Old 03-18-2008
cooldude cooldude is offline
Registrert bruker
  
 

Bli Date: Mar 2006
Innlegg: 44
Ja, jeg brukte $ 1 i stedet for \ 1. Jeg tror det gjør ingen forskjell.
Når jeg har mønstre som ikke har nye linjer i dem, for eksempel:

Code:
  func_a(3);

Doing

Code:
perl -p -e "s/func_a\((.*)?\);/func_b($1,\n6)/s" < file |more

fungerer som forventet.
  #6 (permalink)  
Old 03-18-2008
æra
Gjestene
  
 

Innlegg: n / a
Bits: 0 [Bank]
Problemet er at med perl -p, er du bare leser og undersøker en linje om gangen. Dermed mønsteret samsvarer ikke blir brukt til noe som ligger på begge sider en linje grense, selv om du har det / s modifier. Du kan fikse det ved å lese alle linjer samtidig, med perl -0777 Eller noe tilsvarende.

Se også Perl FAQ, som har en detaljert diskusjon om dette emnet.
  #7 (permalink)  
Old 03-18-2008
cooldude cooldude is offline
Registrert bruker
  
 

Bli Date: Mar 2006
Innlegg: 44
perl burde ha gitt meg en feil / advarsel fordi s modifier gjelder ikke-p.
Allikevel, her er hva jeg prøvde, men denne gangen får jeg ingenting outputted:

Code:
perl -e -0777 "s/func_a\((.*)?\);/func_b(\1,\n6)/s" < file |more

og

Code:
perl -e "BEGIN {$/=undef} s/func_a\((.*)?\);/func_b(\1,\n6)/s"

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:49.


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