sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #34888
Re: Regular Expressions.. commandline stuff..
On Fri, 23 Mar 2001 15:24:33 +0100, Joern Thyssen wrote:
>> route -n | grep "U " | grep -v lo | cut -c 1-16,33-47 | perl -p -e
>> 's/(([0-9]{1,3}\.){3}[0-9]{1,3})\W+(([0-9]{1,3}\.){3}[0-9]{1,3})\W+/\1\/\3/;'
>
>Ups, \W skulle have været \s
Der er så vidt jeg kan se altid tale om en række mellemrum-separarede kolonner
her. Så det er nemmere at bruge -a parameteren til perl, som splitter linien
om i en array (@F):
route -n | perl -lane 'print "$F[0]/$F[2]" if $F[3] eq "U" and $F[7] ne "lo"'
Print kolonne #0 / #2 hvis #3 er "U" og #7 er IKKE lo.
Dog ville jeg måske bruge ifconfig i stedet for - der kunne jo være en extra
route sat op:
ifconfig | perl -00ne '
print"$2/$3" if /^(\w+).*inet addr:(\S+).*Mask:(\S+)/s and $1 ne "lo"
'
-00 switchen får Perl til at bruge "paragraph mode" hvor en linie betragtes
som at værende termineret med 2 newlines. Praktisk ved ifconfig, hvor
information om hvad interfacenavn og hvad dens adresse er står på forskellige
linier.
I mere obskur form:
ifconfig|perl -00ne'/^(\w+).*addr:(\S+).*Mask:(\S+)/s&&$1ne lo?print"$2/$3":0'
PS: Jeg brugger Perl til "programmer" på een linie, og Python til dem på 2
linier og derover ;)
--
=======================================================================
<erwin@xxxxxxxxxxxxx> Herlev, Denmark Software Designer
<URL:http://www.andreasen.org/> <*> LASAT^WEicon Networks
=======================================================================
References