![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
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. |
|
||||
|
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. |
|
||||
|
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. |
|
||||
|
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"
|
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|