The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как задать переменную для awk из окружения"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как задать переменную для awk из окружения"  +/
Сообщение от dp47 (ok) on 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 вписать вручную то все работает.

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как задать переменную для awk из окружения"  +/
Сообщение от Andrey Mitrofanov on 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, как это может _показаться. Это шелл.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как задать переменную для awk из окружения"  +/
Сообщение от dp47 (ok) on 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
или я неверно все понял?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как задать переменную для awk из окружения"  +/
Сообщение от cat84 email(ok) on 09-Апр-12, 15:15 
Вот тебе пример
cat /etc/passwd | gawk -v FS=":" -v var_a="bla-bla-bla" '{ print var_a " " $1 " " $2;}'
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру