Это не идеально, но я предлагаю написать bash-скрипт, который принимает поисковый запрос, замените этот поисковый запрос в awk-скрипте, а затем запустите скрипт. Например:
$ cat dosearch.sh
sed "s/XXX/$1/" awktemplate.awk > awkfile.awk
awk -f awkfile.awk data.txt
$ cat awktemplate.awk
{
j = 1
if ($j ~ /XXX/) {
# Do something, such as
print "Found:", $0
}
}
$ cat data.txt
foo here
bar there
xyz everywhere
$ ./dosearch.sh foo
Found: foo here
$ ./dosearch.sh bar
Found: bar there
В приведенном выше примере шаблон awk содержит «XXX» в качестве поискового термина, bash-скрипт заменяет этот поисковый термин первым параметром, а затем вызывает awk для измененного скрипта.