awk
переменные просто используются для своих значений, как и переменные в большинстве языков - они не перепарированы для выражений. С помощью этого можно делать все, что угодно:
a='15986327,415532694,850257614,875121642,20140819'
echo $a | awk -F, -v OFS=, '{print $1, $2, $4}'
(установка OFS
, чтобы на выходе были запятые). Если в качестве переменной требуется b
, Вы можете использовать:
b='$1, $2, $4'
echo $a | awk -F, -v OFS=, "{print $b}"
вместо этого, который заменяет b
в выражении awk
.
Все это говорит о том, что для этого вам не нужен awk
. Это действительно работа для cut
:
echo "$a" | cut -d, -f1,2,4
, которая выбирает поля 1, 2 и 4, используя ,
в качестве разделителя полей, без сложного двойного разбора кода. Именно для этого и делается cut
.
Благодаря @garethTheRed, проблема была в iptables
. В FORWARDING цепочке было установлено REJECT все, что я удалил из этой цепочки iptables -F FORWARDING
(скорее разрушение, но я не очень хорошо знаком с iptables
), затем добавлено:
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT
Работает отлично!