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

Исходное сообщение
"Как задать переменную для awk из окружения"

Отправлено dp47 , 09-Апр-12 03:33 
Прошу не пинать за ламерский язык повествования, с bash знаком 3 дня, как в прочем и самим програмированием.
К сути.
Есть текстовый файл вида:
df123:256487123
df231:562789256
df246:789520354

Так же есть цикл в котром каждый раз рамдомно мне предлогается взять 2 разных строки. Из первой предложенной строки мне нужно взять первое слово, из второй предоложенной второе.

Пример:
Цикл мне выдал цфры 1 и 3, значит нужно из первой строки получить первое слово А=df123, затем из третьей строки второе слово В=789520354
Сейчас вобщем затупил на моменте:
I=3                                  # эт допустим цикл мне говорит какую строку дергать.
export I                             # отправляю переменную в окружение
B=$(awk -F":" 'NR==$ENVIRON["I"] { print $2 }' /sh/df.txt) # так не работает! тоесть не читает что NR у него равен 3.

B=$(awk -F":" 'NR==3{ print $2 }' /sh/df.txt) # а если 3 вписать вручную то все работает.

Понимаю, что не верный формат записи. Подскажите как записать чтоб заработало?


Содержание

Сообщения в этом обсуждении
"Как задать переменную для awk из окружения"
Отправлено Andrey Mitrofanov , 09-Апр-12 09:18 
> I=3            
> B=$(awk -F":" 'NR==$ENVIRON["I"] { print $2 }' /sh/df.txt) # так не работает!
> тоесть не читает что NR у него равен 3.

Четырьмя темами ниже же http://www.opennet.me/openforum/vsluhforumID9/9423.html#1

И нет, там не awk. И даже не sed, как это может _показаться. Это шелл.


"Как задать переменную для awk из окружения"
Отправлено dp47 , 09-Апр-12 13:59 
> Четырьмя темами ниже же http://www.opennet.me/openforum/vsluhforumID9/9423.html#1

Если я верно понял решение приведенное там, то в моем случае должно быть так:
I=2
for A in `seq  $I $I` #ну потомучто меня только 2 строка интересует в данном случае
do
B=$(awk -F":" 'NR=="$A" { print $2 }' /sh/df.txt)
done

не работает. теже грабли, не понимает что NR==2
или я неверно все понял?


"Как задать переменную для awk из окружения"
Отправлено cat84 , 09-Апр-12 15:15 
Вот тебе пример
cat /etc/passwd | gawk -v FS=":" -v var_a="bla-bla-bla" '{ print var_a " " $1 " " $2;}'