Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Mar 2002 20:33:04 -0600 (CST)
From:      hawkeyd@visi.com (D J Hawkey Jr)
To:        parv_@yahoo.com, freebsd-questions@freebsd.org
Subject:   Re: awk - any possibility of using a variable in regex
Message-ID:  <200203180233.g2I2X4n22005@sheol.localdomain>
In-Reply-To: <20020317223910.GA3245_moo.holy.cow@ns.sol.net>
References:  <20020317223910.GA3245_moo.holy.cow@ns.sol.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <20020317223910.GA3245_moo.holy.cow@ns.sol.net>,
	parv_@yahoo.com writes:
> is it impossible to use a variable inside a regex in awk?  i tried
> the following w/o any success...
> 
> { echo 'polka dot'; echo 'red dot'; } | \
> awk -v type=polka ' BEGIN { dot_type=type } /dot_type/ { print }'
> 
> ...so i had resorted to perl for now.
> 
> actual usage is to kill X applications -- xinit, startx -- (from
> /usr/share/skel/dot.xinitrc)...
> 
>   [SNIP]

Hey, I could use something like this!

I don't know if awk REs support variables - I played with your example
some, and it doesn't do anything for me -  but I can make your script a
little more efficient by eliminating the perl. Try something like this:

---8<---

#!/bin/sh

TMP=/var/tmp/$0.$$

teststop ()
{
    [ `ps -aO ruser |egrep $LOGNAME.+$1 | grep -v grep | tee $TMP | wc -l` -eq 1 ] && kill -9 `cat $TMP | awk '{ print $1 }'`
    rm -f $TMP
}

teststop startx
teststop xinit

--->8---

A little more time and creativity could pro'lly eliminate the temporary
file, and maybe the awk, too.

>   - parv

Hope this helps,
Dave

-- 

Windows: "Where do you want to go today?"
Linux: "Where do you want to go tomorrow?"
FreeBSD: "Are you guys coming, or what?"


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200203180233.g2I2X4n22005>