URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5968
[ Назад ]

Исходное сообщение
"переменная из bash в awk"

Отправлено teset , 28-Ноя-06 16:10 
как вставить переменную из bash скрипта в awk?
вот кусок из скрипта:

IP=1.1.1.1
OUT=`cat /tpm/file | awk '$1=="$IP" {print} ' | awk '{s+=$4} END {print(s)}'`
echo $OUT

так не работает, а если вместо $IP вставляю 1.1.1.1 то все работает.


Содержание

Сообщения в этом обсуждении
"переменная из bash в awk"
Отправлено plsn , 28-Ноя-06 16:46 
>как вставить переменную из bash скрипта в awk?
>вот кусок из скрипта:
>
>IP=1.1.1.1
>OUT=`cat /tpm/file | awk '$1=="$IP" {print} ' | awk '{s+=$4} END {print(s)}'`
>
>echo $OUT
>
>так не работает, а если вместо $IP вставляю 1.1.1.1 то все работает.
>


awk -v IP=$IP 'код awk-программы'


"переменная из bash в awk"
Отправлено teset , 28-Ноя-06 21:16 
>>как вставить переменную из bash скрипта в awk?
>>вот кусок из скрипта:
>>
>>IP=1.1.1.1
>>OUT=`cat /tpm/file | awk '$1=="$IP" {print} ' | awk '{s+=$4} END {print(s)}'`
>>
>>echo $OUT
>>
>>так не работает, а если вместо $IP вставляю 1.1.1.1 то все работает.
>>
>
>
>awk -v IP=$IP 'код awk-программы'
не работает, выдает пустую строку и не жалуется на ошибку


"переменная из bash в awk"
Отправлено madskull , 29-Ноя-06 02:10 
>>>как вставить переменную из bash скрипта в awk?
>>>вот кусок из скрипта:
>>>
>>>IP=1.1.1.1
>>>OUT=`cat /tpm/file | awk '$1=="$IP" {print} ' | awk '{s+=$4} END {print(s)}'`
>>>
>>>echo $OUT
>>>
>>>так не работает, а если вместо $IP вставляю 1.1.1.1 то все работает.
>>>
>>
>>
>>awk -v IP=$IP 'код awk-программы'
> не работает, выдает пустую строку и не жалуется на ошибку

да потому что надо почитать что-нибудь по теме и подумать.
если использовать awk -v IP=$IP 'код awk-программы', то внутри awk программы переменная используется без $.
или же делать awk "программа", тогда использовать $IP


"переменная из bash в awk"
Отправлено perece , 30-Ноя-06 15:46 
>>>>OUT=`cat /tpm/file | awk '$1=="$IP" {print} ' | awk '{s+=$4} END {print(s)}'`
можно еще вот так:
OUT=`cat /tpm/file | awk '$1=="'$IP'" {print} ' | awk '{s+=$4} END {print(s)}'`

т.е. awk 'началопрограммы'$var'оставшаясячасть'

\^P^/


"переменная из bash в awk"
Отправлено Pikador , 01-Дек-06 14:13 
>>>>>OUT=`cat /tpm/file | awk '$1=="$IP" {print} ' | awk '{s+=$4} END {print(s)}'`
>можно еще вот так:
>OUT=`cat /tpm/file | awk '$1=="'$IP'" {print} ' | awk '{s+=$4} END {print(s)}'`
>
>
>т.е. awk 'началопрограммы'$var'оставшаясячасть'
>
>\^P^/

Работающий пример
awk '{if ($1 ~ IP && $3 <= IP2 && $4 >= IP2) print $5}' IP=$IP IP2=$IP2  /root/nets.txt