Если какая-либо часть «соответствующей» строки (, включая расстояние между полями ), может изменяться между двумя файлами, тогда join
будет лучшим инструментом для этой работы.
sort -n -k 2 < file1 > sort1
sort -n -k 2 < file2 > sort2
join --header -1 2 -2 2 -o '1.1 1.2 1.3 1.4 1.5' sort1 sort2
Шаги sort
необходимы, потому что join
требует, чтобы его ввод был отсортирован (по общему полю ).
Результат:
#CHROM POS ID REF ALT
1 10366 rs58108140 G A
1 51954 rs185832753 G C
Похоже, что в Linux 5.4.0 реализована некоторая оптимизация, которая предотвращает запуск некоторых пакетов через POSTROUTING .
Чтобы заставить протоколирование работать, было добавлено фиктивное правило в цепочку POSTROUTING . Любая из этих работ (в дополнение к-j LOG
):
$ sudo iptables -t nat -A POSTROUTING -o. -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -o. -j NETMAP --to 0
Даже после этого не все пакеты регистрируются. Например, регистрируется только первый (с SEQ=0)эхо-запрос ICMP и только первый TCP-пакет (с SYN ).
Мне удалось решить настоящую проблему NAT (, т. е. -j MASQUERADE
не работает ), запустив:
$ echo 0 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables