You can do this in a pure AWK script without a shell wrapper:
#!/usr/bin/awk -f BEGIN { key = ARGV[1]; ARGV[1]="" } $1 == key { print $2 }
Name it as follows:
./lookup.awk keyval lookupfile
Example:
$ cat lookupfile aaa 111 bbb 222 ccc 333 ddd 444 zzz 999 mmm 888 $ ./lookup.awk ddd lookupfile 444 $ ./lookup.awk zzz lookupfile 999
It can even be extended to select the desired field using an argument.
#!/usr/bin/awk -f BEGIN { key = ARGV[1]; field = ARGV[2]; ARGV[1]=ARGV[2]="" } $1 == key { print $field }
Example:
$ cat lookupfile2 aaa 111 abc bbb 222 def ccc 333 ghi ddd 444 jkl zzz 999 mno mmm 888 pqr $ ./lookupf.awk mmm 1 lookupfile2 mmm $ ./lookupf.awk mmm 2 lookupfile2 888 $ ./lookupf.awk mmm 3 lookupfile2 pqr
source share