![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| UNIX for dummyer Spørgsmål & svar Hvis du ikke ved, hvor man skal sende en UNIX-eller Linux-spørgsmål, efter det her. Alle UNIX og Linux newbies velkommen! |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| At fjerne ny linje karakter | shihabvk | UNIX for Advanced & Ekspertsøgning Brugere | 7 | 06-18-2009 07:44 AM |
| bash, mens læse, hvordan du fjerner \ n karakter | papasj | Shell Programmering og Scripting | 3 | 05-25-2009 09:24 PM |
| Fjern sidste tegn i en periode | Raynon | Shell Programmering og Scripting | 6 | 03-20-2008 06:04 AM |
| Forsøger at fjerne en enkelt karakter fra en linje | Iz3k34l | UNIX for dummyer Spørgsmål & svar | 5 | 07-07-2007 01:29 PM |
| Fjern sidste tegn i Line | danhodges99 | Shell Programmering og Scripting | 4 | 05-21-2003 09:30 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Hej,
Jeg forsøger at indfange servertrafikken og email mig automatisk. Dette er, hvordan det går svrload \u003d `oppetid | awk '(print $ 11)'` Nu denne returnerer en værdi sige "1,39". Hvordan får jeg fratage "," fra den returnerede værdi og konvertere det til et helt tal at sammenligne med en tærskel? Tak Murali |
|
||||
|
Du er velkommen. Der er mange måder at gøre dette.
Her er forklaringen: echo "1,39" | perl -pe 's /.$//' perl -pe Dette kræver perl. Den "p" årsager Perl til at passere gennem input til output, uanset om det er ændret undervejs. "E" angiver, at Perl at udtrykket (kode) kommer næste. Udtrykket er en simpel regex substitution. Den periode, står for ethvert tegn, og dollar-tegn betyder "slutningen af linjen." Så dette regulære udtryk matcher et vilkårligt tegn i slutningen af linjen. Den anden del af det regulære udtryk var tomme, så hvis den første del kampe, det er erstattet af ingenting. Her er en mere detaljeret regulært udtryk, i Perl syntaks, bare FYI. $ line \u003d ~ s / Fred $ / barney /; Her, jeg erstatte "fred" i slutningen af den linje med "barney". På kortere eksempel, jeg ønskede at fjerne noget, så der var noget mellem de to sidste frem-skråstreger. Også har jeg ikke bruge "variabel \u003d ~" syntaks, fordi i en Perl one-liner i linje med input antages af Perl. Det kan også være udtrykkeligt nævnt med $ _. Så disse to er identiske: echo "1,39" | perl -pe 's /.$//' echo "1,39" | perl -pe '$ _ \u003d ~ s /.$//' Endelig "\u003d ~" syntaks sæt $ _ til resultatet af driften af regulære udtryk substitution på det. På kortere version, der er implicit, og Perl forstår det. ShawnMilo |
|
||||
|
Jeg foretrækker Python, men du kan ikke slå Perl one-liners til at gøre temmelig kompliceret tingene i et script eller på kommandolinjen.
Det meste af, hvad jeg havde at forklare ovenfor var regulære udtryk syntaks, som er en helt anden kugle af voks. Lad ikke regexes skræmme dig væk fra Perl. Jeg kan varmt anbefale Jeffrey Friedl's bog "Mastering Regular Expressions." Jeg tror, den aktuelle udgave er den tredje. Læs de første godt 80 sider, og du vil blive en regex champ. ShawnMilo |
![]() |
| Bogmærker |
| Tags |
| perl, perl regex, regex, regulære udtryk |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|