![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| UNIX for Dummies Spørsmål og svar Hvis du er usikker på hvor du skal legge inn en UNIX-eller Linux-spørsmålet, legger den her. Alle UNIX og Linux newbies velkommen! |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Slik fjerner nye tegn | shihabvk | UNIX for Advanced & ekspertbrukere | 7 | 06-18-2009 08:44 |
| bash mens lese hvordan du fjerner \ n tegn | papasj | Shell programmering og Skripting | 3 | 05-25-2009 10:24 |
| Fjern siste tegnet av et uttrykk | Raynon | Shell programmering og Skripting | 6 | 03-20-2008 06:04 |
| Prøver å fjerne enkelt tegn fra en linje | Iz3k34l | UNIX for Dummies Spørsmål og svar | 5 | 07-07-2007 02:29 |
| Fjern siste tegnet av Line | danhodges99 | Shell programmering og Skripting | 4 | 05-21-2003 10:30 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Hei,
Jeg prøver å fange lasten på tjeneren og email meg automatisk. Dette er hvordan det går svrload \u003d `uptime | awk '(print $ 11)'` Nå er denne returnerer en verdi si "1.39". Hvordan stripe jeg "," fra den returnerte verdien og konvertere dette til et helt tall å sammenligne med en terskel? Takk Murali |
|
||||
|
You're welcome. Det er mange måter å gjøre dette.
Her er forklaringen: echo "1.39," | perl -pe 's /.$//' perl -pe Dette krever perl. "P" årsaker Perl til å passere gjennom innspill til utgang, om det er endret underveis. Den "e" viser til Perl at uttrykket (kode) kommer etterpå. Uttrykket er en enkel regex substitusjon. Perioden står for alle tegn, og dollartegn betyr «slutten av linjen." Så dette regulært uttrykk matcher alle tegn på slutten av linjen. Den andre delen av regulære uttrykk var tomme, så hvis den første delen kamper, det er erstattet med ingenting. Her er en mer detaljert regulære uttrykk, Perl syntaks, bare FYI. $ linje \u003d ~ s / Fred $ / Barney /; Her jeg erstatte "Fred" på slutten av linjen med "Barney". På kortere eksempel, ønsket jeg å fjerne noe, så det var ingenting mellom de to siste forward-skråstreker. Også ville jeg ikke bruke "variabel \u003d ~" syntaks, fordi i en Perl one-liner linje av inndata er lagt til grunn ved Perl. Det kan også være eksplisitt nevnt med $ _. Så disse to er identiske: echo "1.39," | perl -pe 's /.$//' echo "1.39," | perl -pe '$ _ \u003d ~ s /.$//' Til slutt setter "\u003d ~" syntaks $ _ til resultatet av å kjøre det vanlige uttrykket substitusjon på det. I den kortere versjonen som er implisitt, og Perl forstår det. ShawnMilo |
|
||||
|
Jeg foretrekker Python, men du kan ikke slå Perl one-liners for å gjøre ganske komplisert ting i et skript eller på kommandolinjen.
Det meste av det jeg hadde å forklare ovenfor var vanlig uttrykk syntaksen, som er en helt annen ball av voks. Ikke la regexes skremme deg bort fra Perl. Jeg anbefaler Jeffrey Friedl's bok "Mastering Regular Expressions". Jeg tror den nåværende utgaven er den tredje. Les de første 80 eller så sidene og du vil bli en regex mester. ShawnMilo |
![]() |
| Hugseliste |
| Tags |
| perl, perl regex, regex, regeluttrykk |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|