$ awk 'NR==FNR { a[$1]++ ; next}; $1 in a' file2 file1
c cat
e eagle
f fire
Это считывает вfile2
(первый аргумент имени файла )и сохраняет его в массиве a
. Он определяет, читает ли он первый файл, проверяя, равно лиNR
(общее количество просмотренных входных записей )FNR
(номеру входной записи текущего входного файла)
Затем он считываетfile1
(второй аргумент имени файла )и, если первое поле находится в массиве a
, печатает соответствующую строку ввода (в awk
— действие по умолчанию при любом успешном результате теста., такой как $1 in a
, должен напечатать входную строку -, поэтому $1 in a
сам по себе эквивалентен$1 in a {print}
).
Кстати, во многих случаях подобные задачи можно выполнить с помощью grep -f file2 file1
, но это будет соответствовать содержимому файла2 в любом месте в файле1 -, например. c
из файла2 будет соответствовать не только cat
, но и jack
в файле1.
Исторически сложилось так, что в данном хуке была одна цепочка NAT (prerouting, input, output,... ). Выполнение оператора nat или просто принятие -пакета, являющегося терминалом для цепочки, с одной цепочкой также заканчивало обработку внутри ловушки. С nftables , позволяющими использовать более одной цепочки в одном и том же хуке, завершение цепочки просто продолжится до следующей цепочки. Таким образом, если первая цепочка ничего не делает (, принимая -сообщение ), следующая цепочка получает шанс сделать это вместо этого,что не то, что задумано.
Чтобы решить эту проблему, первая цепочка (или любая другая цепочка )может оставить сообщение, переданное каждой следующей цепочке, чтобы она могла воздействовать на нее :установить метку (произвольное значение )чтобы следующая цепочка изменила свое поведение.
Вместо accept
, который имеет нулевой эффект, (оставляя цепочку VPN-POSTROUTING
пустой, также выполняется политика по умолчанию :accept
), установите отметку. Поэтому замените правило в VPN-POSTROUTING
на это:
nft add rule ip vpn VPN-POSTROUTING oifname br2 ip saddr 10.0.0.0/24 ip daddr 192.168.0.0/24 mark set 0xdeaf
Когда эта метка установлена, ее можно использовать в другой цепочке для изменения поведения, не выполняя остальные правила. Сначала вставьте это правило вip nat INTERNET
:
nft insert rule ip nat INTERNET mark 0xdeaf accept