Re: Setting Multiple Shell Variables from One Run of awk
- From: Bob McGowan <bob_mcgowan@xxxxxxxxxxxx>
- Date: Tue, 30 Sep 2008 12:48:59 -0700
Martin McCormick wrote:
Right now, I have a shell script that does the following:
hostname=`echo $NEWDEV |awk 'BEGIN{FS="."}{print $1}'`
domain=`echo $NEWDEV |awk 'BEGIN{FS="."}{print $2}'`
top0=`echo $NEWDEV |awk 'BEGIN{FS="."}{print $3}'`
top1=`echo $NEWDEV |awk 'BEGIN{FS="."}{print $4}'`
That looks inefficient (dumb) so I ask, is there a way
to assign the fields in an awk expression to shell variables as
one runs awk once?
Being able to do that would mean one run of awk instead
of the 4 shown here and, if file accesses are involved, there is
only one of those.
Thanks.
Martin McCormick WB5AGZ Stillwater, OK Systems Engineer
OSU Information Technology Department Telecommunications Services Group
Yes, but it takes both awk and shell to do it. And, because the awk script has a bunch of stuff in it that the shell recognizes, this works best if you can put the script in a file. FYI, I tested this, cut and past to a file and the command line, it worked for me (of course, I had to use some bogus but properly formatted input ;).
The file would look like this:
BEGIN{FS="."}
{print "hostname=" $1";domain=" $2";top0=" $3";top1=" $4}
The shell part is this:
eval $(echo $NEWDEV | awk -f awkscriptname)
I prefer the $(...) to the grave accent form, it's easier to read. But if you need backwards compatibility with a shell that doesn't support the new syntax, use the back ticks.
--
Bob McGowan
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature
- References:
- Setting Multiple Shell Variables from One Run of awk
- From: Martin McCormick
- Setting Multiple Shell Variables from One Run of awk
- Prev by Date: Re: how to create an image of your debian computer hard drive for cloning
- Next by Date: Re: how to create an image of your debian computer hard drive for cloning
- Previous by thread: Setting Multiple Shell Variables from One Run of awk
- Next by thread: Re: Setting Multiple Shell Variables from One Run of awk
- Index(es):
Relevant Pages
|