LINUX.ORG.RU

Значения awk в переменные

 ,


1

0

Доброго времени суток. Вопрос состоит по присвоению значений awk в переменные. Есть у меня файл:

1;GigabitEthernet1/1
2;GigabitEthernet1/2
3;GigabitEthernet1/3
4;GigabitEthernet1/4
5;GigabitEthernet1/5
6;GigabitEthernet1/6
7;GigabitEthernet1/7
8;GigabitEthernet1/8
9;GigabitEthernet1/9

Вот этим я разделяю на две части строчки:

awk -F";" '{print $1 " " $2}' /home/file

Каким образом мне задать значение $1 и $2 в переменные для того чтобы подставить их в нужном месте?

Суть в том что мне нужно каждую строчку с цифрой и гигабитинтернет подставить в конфиге. Проблема в том что никак не получается задать в переменную те значения.

man awk читал, -v var=val видел. Гуглил. Примеры видел, но у меня не цепляется значение в переменную никак.. Устал искать, надеюсь на вашу помощь . Спасибо.


Какую переменную, bash или awk?
awk: { myvar=$1 }
bash: eval «$(awk '{ ... print „myvar=“ $1 }')»

AITap ★★★★★ ()
Ответ на: комментарий от demo

То есть мне нужно построчно считывать строчки записывать $1 и $2 в временные переменные, дабы во время считывания подставлять в файл эти все значния.

demo ()
Ответ на: комментарий от demo

Заставляйте awk печатать bash'евские выражения назначения переменных (вроде varname=«something»; anothervar=«anything»; ) и eval'те результат.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Не до конца вас понял.

Вот

awk -F";" '{num=$1}' /home/file
echo $num;
Выводит пустую строчку.

demo ()
Ответ на: комментарий от demo

Забыли eval.

eval «$(awk -F';' '{print „num=“ $1}' /home/file)» # awk печатает: num=значение_первого_поля
echo $num

AITap ★★★★★ ()
#!/bin/bash

awk -F';' '{print $1 " " $2}' /home/file | while read i; do
  a=( $i )
  echo "0:${a[0]} 1:${a[1]}"
done
anonymous ()

Почему бы не обойтись одним только шеллом?

#!/bin/sh
IFS=";"
while read var1 var2
do
  echo $var1 $var2
done < /home/file
unterwulf ()

Примеры видел, но у меня не цепляется значение в переменную никак..

echo | awk -v var=val '{print var}'

anonymous ()

eval $(awk -F";" '{printf «VAR1=%s\nVAR2=%s\n», $1, $2}' /home/file)

ananas ★★★★★ ()

рекомендую просто писать на чем-нибудь одном (хотя бы данную часть скрипта).

возможности по подстановке у awk ничуть не хуже, чем у shell, так что имеет смысл этот кусок написать целиком на awk и не страдать.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.