Страница 1 из 1

параметр в AWK

Добавлено: 2012-11-23 7:37:22
mr-susi
как передать параметр в AWK?

если он не совпадает с параметром командной строки, все примеры, которые я видел, используют строковую константу. В данном случае я хочу выбрать строку из потока по подстроке, значение которой вычисляется здесь же в ksh по другому awk.

awk '/пример1/ {print}'

но строка "пример1" вычисляется в другом месте и не совпадает с параметром $1 скрипта и это нужно сделать в цикле?

Re: параметр в AWK

Добавлено: 2012-11-23 10:51:41
kpp
Параметры в AWK можно передавать так:
1.

Код: Выделить всё

awk '{print a,b,c}' a=1 b=2 c=3 file_name
2.

Код: Выделить всё

awk -v a=1 -v b=2 -v c=3 '{print a,b,c}' file_name

Re: параметр в AWK

Добавлено: 2012-11-23 13:15:01
mr-susi
большое спасибо, что-то я наверное не дочитал в доках, можно еще вопрос почему на переменной nt

Код: Выделить всё

12.123.12.120:58573 12345/fb
12.123.12.12:5857 4321/fb
не работает выборка?
k=4321
nd=`echo "$nt" | awk -v a=$k 'BEGIN {l=length(a)} a==substr($2,1,l) {print $0} END {print l}'`
чувствую ошибка в

Код: Выделить всё

a==substr($2,1,l)
а понять в чем не могу

Re: параметр в AWK

Добавлено: 2012-11-23 13:59:02
kpp
А что значит не работает?
Работает.
Только проще сделать например так:

Код: Выделить всё

echo "${nt}" | grep "^[^ ]* ${k}\/"

Re: параметр в AWK

Добавлено: 2012-11-27 13:14:05
mr-susi
спасибо, намек понял, а то все на awk зациклился, совсем про grep забыл )))