Поиск определенного символа в одной или нескольких позициях в файле

SNPT / DNPT был создан специально для облегчения NPTv6, выполнялся исключительно в таблице "mangle" и несовместим с отслеживанием соединений.

Если используется отслеживание соединения, то существует цель NETMAP, которая может выполнять преобразование префикса сети IPv6. Итак, документация по этому поводу неясна, я подозреваю, что по политическим / религиозным причинам (цель NETMAP на самом деле является формой NAT66, которую многие не любят).

Итак, если 2607: xxx :: / 64 - внешний префикс, fda3: xxx :: / 64 - внутренний префикс, а eth0.99 является исходящим интерфейсом, то следующую работу выполняет:

ip6tables -t nat -A POSTROUTING -o eth0.99 -j NETMAP --to 2607:xxx::/64 -s fda3:xxx::/64
ip6tables -t nat -A PREROUTING -i eth0.99 -j NETMAP -d 2607:xxx::/64 --to fda3:xxx::/64

Теперь, чтобы прояснить: NETMAP выполняет преобразование адресов 1: 1 (NAT), но я не уверен, что он следует RFC6296 в отношении нейтральности контрольной суммы или как он отличается от RFC-совместимого NPTv6 каким-то другим образом, но для меня этого достаточно, и он работает.

2
01.12.2016, 18:04
3 ответа

Вероятно, следующая строка awk поможет вам лучше понять это

printf '%s\n' "foo bar *" foo "more foo * more * foo and baz" "another foo bar foo" | awk '{for (i=1;i<=NF;i++) if ($i=="*") print $i " appears in field: " i}'

Так же просто, как итерация по полям, сопоставление поля с шаблоном и его распечатка

0
27.01.2020, 22:44
grep '^\(.\{4\}\|.\{24\}\)\*' X

Найти все строки, если файл X содержит звездочку (в кавычках, потому что в противном случае в регулярном выражении это означает ноль или более предшествующих атомов) перед 4 или 24 символы с начала строки.

0
27.01.2020, 22:44

Как минимум с gawk и mawk , вы можете рассматривать каждый символ как поле, установив пустой разделитель полей. Так, например, вы можете сделать

gawk -F '' '$5 == "*" || $10 == "*"' test.txt

, что приведет к печати совпадающих записей (строк) с использованием правила печати по умолчанию.

Аналогичный трюк в perl (обратите внимание, что поля имеют нулевой индекс)

perl -F'' -ane 'print if $F[4] eq "*" || $F[9] eq "*"' test.txt
0
27.01.2020, 22:44

Теги

Похожие вопросы