[olug] Unix Tip: GET YOUR IP-ADDRESS (long explanation)

Vincent vincentr at cox.net
Fri Mar 21 00:25:45 UTC 2003


The cookie is yours!

BTW, This was Rev. Dr. Aaron "The-Script-Monkey" Segura's one-liner.  It counts the lines of actual code in a file just so he can
say "my script is bigger than yours".
It wouldn't be necessary if wc had an option to ignore blank lines...

----- Original Message -----
From: "Daniel Pfile" <daniel at pfile.net>
To: "Omaha Linux User Group" <olug at olug.org>
Sent: Thursday, March 20, 2003 5:32 PM
Subject: Re: [olug] Unix Tip: GET YOUR IP-ADDRESS (long explanation)


> Hmm ok... Half to be a smart ass, half to show people just why the
> command line is cool... This does explain why that learning the bash
> shell book is always near Vince. Please don't nitpick, this is kinda
> hard to explain in english, that's why programing languages exist.
>
> [ $# -gt 0 ]
>
> If there are more than 0 positional parameters .
>
> &&  (
>
> And this works:
>
> while [ "$1" ];
>
> Loop through the params
>
> do ( [ -f $1 ]
>
> Do this if the argument is a file
>
> && [ "$( file $1 | grep text)" ] )
>
> The results of running the file command on the argument contains the
> word 'text'
>
> && ( echo -e
>
> and this echo, grep, wc, tr group of commands work
>
> "$( grep -vE '^[[:space:]]*#|^[[:space:]]*$' $1
>
> Print out anything in that file that doesn't either contain a comment:
> '^[[:space:]]*# or a blank line: ^[[:space:]]*$
>
> | wc -l
>
> Count the number of lines in that output
>
> | tr -d '[[:space:]]' )\t$1" );
>
> Convert the output of spaces in wc -l into tabs.
>
> shift;
>
> Next please
>
> done )
>
> Done with the do.
>
> || echo "Usage: $0 <file> [file file file...]"
>
> Since there were less than 0 parameters, show the user the usage of the
> script.
>
> Do I get a cookie Vince?
>
> -- Daniel
>
> On Thursday, March 20, 2003, at 04:20 PM, Vincent wrote:
>
> > Would you provide a long explanation for this one-line script ?  :)
> >
> > [ $# -gt 0 ] && ( while [ "$1" ]; do ( [ -f $1 ] && [ "$( file $1 |
> > grep text)" ] ) && ( echo -e "$( grep -vE
> > '^[[:space:]]*#|^[[:space:]]*$' $1 | wc -l | tr -d '[[:space:]]'
> > )\t$1" ); shift; done ) || echo "Usage: $0 <file> [file file file
> > ...]"
> >
> >
> >
> > ----- Original Message -----
> > From: "Eric Penne" <epenne at olug.org>
> > To: <olug at olug.org>
> > Sent: Thursday, March 20, 2003 2:11 PM
> > Subject: Re: [olug] Unix Tip: GET YOUR IP-ADDRESS (long explanation)
> >
> >
> >> ifconfig | grep "inet addr" |  grep -v "127.0.0.1" | awk '{print
> >> $2;}' |
> >> awk -F':' '{print $2;}'
> >>
> >>
> >> Here is a rundown on this command for the newbies.
> >>
> >> 1) ifconfig is usually located in /sbin/ifconfig shows the network
> >> interfaces that are up and how they are configured.
> >>
> >> 2) grep pulls lines out of the ifconfig info that contain inet addr
> >>
> >> 3) grep -v inverts.  It prints all the lines that don't have 127.0.0.1
> >> in them.
> >>
> >> 4) awk looks at the info and pulls the second field out, where the
> >> fields are separated by whitespace by default.
> >>
> >> 5) Then awk -F':' is used again to pull the second field out, where
> >> the
> >> fields are separated by a colon.
> >>
> >> The individual outputs follow:
> >>
> >> 1)
> >>
> >> eth0      Link encap:Ethernet  HWaddr 00:80:AD:0C:BA:43
> >>           inet addr:192.168.1.42  Bcast:192.168.255.255
> >> Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST  MTU:1500
> >> Metric:1
> >>           RX packets:34866 errors:0 dropped:0 overruns:0 frame:0
> >>           TX packets:5882 errors:0 dropped:0 overruns:0 carrier:0
> >>           collisions:0 txqueuelen:100
> >>           RX bytes:7133322 (6.8 MiB)  TX bytes:850473 (830.5 KiB)
> >>           Interrupt:3 Base address:0xd800
> >>
> >> lo        Link encap:Local Loopback
> >>           inet addr:127.0.0.1  Mask:255.0.0.0
> >>           UP LOOPBACK RUNNING  MTU:16436  Metric:1
> >>           RX packets:8 errors:0 dropped:0 overruns:0 frame:0
> >>           TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
> >>           collisions:0 txqueuelen:0
> >>           RX bytes:400 (400.0 b)  TX bytes:400 (400.0 b)
> >>
> >> 2)
> >>           inet addr:192.168.1.42  Bcast:192.168.255.255
> >> Mask:255.255.0.0 inet addr:127.0.0.1  Mask:255.0.0.0
> >>
> >> 3)
> >>           inet addr:192.168.1.42  Bcast:192.168.255.255
> >> Mask:255.255.0.0
> >>
> >> 4)
> >> addr:192.168.1.42
> >>
> >> 5)
> >> 192.168.1.42
> >>
> >>
> >> Now don't we all love the pipe command.  Hopefully if you are having
> >> trouble with the above command this explanation can step you through
> >> the
> >> issues.
> >>
> >> Eric
> >>
> >>
> >>
> >> _______________________________________________
> >> OLUG mailing list
> >> OLUG at olug.org
> >> http://lists.olug.org/mailman/listinfo/olug
> >>
> >
> > _______________________________________________
> > OLUG mailing list
> > OLUG at olug.org
> > http://lists.olug.org/mailman/listinfo/olug
>
> _______________________________________________
> OLUG mailing list
> OLUG at olug.org
> http://lists.olug.org/mailman/listinfo/olug



More information about the OLUG mailing list