[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: kommando?



Arvid Rosen <mailinglists@holken.net> wrote:

> Jag skulle vilja köra en text genom några regular expressions, och 
> skriva ut olika delar som matchar till olika ställen.
> 
> Exempel:
> 
> gawk '/(^[0-9]):([0-9])/ {???}'
> 
> I det här fallet skulle jag vilja komma åt texten som matchar i varje 
> parentes separat.
> 
> Om jag t.ex. skickar in 4:5 så skulle jag vilja behandla 4:an och 5:an 
> separat. Går detta? Jag vet att man kan göra så i scriptspråket expect t.ex.
..

. Du kan betrakta : som fältseparator

  $ echo 4:5 | awk -F: '/(^[0-9]):([0-9])/ { print $2":"$1 }'
  5:4

. Du kan använda match() (det tredje argumentet är en Gnu-utvidgning)

  $ echo 4:5 | awk '{ if (match($0, /^([0-9]):([0-9])/, a)) print a[2]":"a[1]}'
  5:4

. Eller varför inte perl

  $ echo 4:5 | perl -ne 'm/(^[0-9]):([0-9])/ && print "$2:$1\n";'
  5:4

Hälsningar,
/Karl

-----------------------------------------------------------------------
Karl Hammar                    Aspö Data               karl@aspodata.se
Lilla Aspö 2340                                                 Nätverk
S-742 94 Östhammar            0173 140 57            Datorer/Utrustning
Sverige                      070 511 97 84        Linux/Unix konsulting
-----------------------------------------------------------------------



Reply to: