Прошу не пинать за ламерский язык повествования, с 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 вписать вручную то все работает.
Понимаю, что не верный формат записи. Подскажите как записать чтоб заработало?
> 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, как это может _показаться. Это шелл.
> Четырьмя темами ниже же 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
или я неверно все понял?
Вот тебе пример
cat /etc/passwd | gawk -v FS=":" -v var_a="bla-bla-bla" '{ print var_a " " $1 " " $2;}'