awk question...
Dave Ciemiewicz
ciemo at bananapc.wpd.sgi.com
Tue Jun 12 02:32:07 AEST 1990
In article <9006091601.aa04003 at VGR.BRL.MIL>, Claude.P.Cantin at NRC.CA writes:
>
> I'm writting a script in which a variable takes the value of a userid.
> I then want to find out who this userid refers to.
>
> I want to do that in one line, involving awk (I know how to do it using
> multiple lines of code).
>
> If the userid is 123, the following would do just fine:
>
> awk -F: '$3 == 123 {print $1}' /etc/passwd
>
> BUT 123 is the content of a variable, say UID. The following does NOT
> work:
>
> awk -F: '$3 == $UID {print $1}' /etc/passwd
>
> (the output is NOTHING).
>
> I have tried several variations, including "$UID", and "$3"=="$UID", etc.,
> but none worked...
>
> Anyone has an insight????
>
> Thank you,
>
> Claude Cantin (CANTIN at VM.NRC.CA)
Claude,
Your problem is that shell variables are not expanded within single quotes (').
Try the following:
awk -F: '$3 == '$UID' {print $1}' /etc/passwd
You can also use:
awk -F: '$3 == uid {print $1}' uid=$UID /etc/passwd
You might check out the AWK book by Aho, Kernighan, and Weinberger from
Addison-Wesley for more fun with AWK.
--- Ciemo
More information about the Comp.sys.sgi
mailing list