вставка новой строки при обнаружении отрицательного + положительного шаблона с помощью sed

Вы должны использовать sysctl -w net.ipv4.conf.XXX.route_localnet = 1 , как и вы, но, вероятно, на виртуальном интерфейсе Ethernet.
Это позволяет ядру сохранять пакеты martin.

Также имейте в виду, что локально сгенерированные пакеты не проходят в цепочку PREROUTING. Итак, вам нужно использовать цепочку OUTPUT.

И, наконец, не пытайтесь использовать NAT в этом особом случае. Используйте - вместо этого прыгайте TPROXY .
Я не могу дать вам рабочий пример по памяти, вам нужно найти точную настройку. Затем заполните ответ для использования в будущем.

1
23.11.2016, 18:28
3 ответа

Требуется небольшая настройка решения sed , размещенного в OP

sed -r 's/([^.] )(SP\. )/\1\n\2/g'

Проблема с s / ([^ \.]) (SP \.) / \ nSP \. / g означает, что он отбрасывает ([^ \.]) . Также . не нужно экранировать внутри [] , а также в разделе замены

1
27.01.2020, 23:34

Я бы сделал это

sed -r '
    # for lines without "ASSERT.", add a newline before "SP."
    # unless it is only preceded by whitespace
    /ASSERT\./! s/^(.*[^[:blank:]].*)(SP\.)/\1\n\2/

    # for lines containing "ASSERT.", add a newline before the last "SP."
    s/^(.*ASSERT\..*SP\..*)(SP\..*)/\1\n\2/
' file
0
27.01.2020, 23:34

Обычно те же задачи могут быть решены путем замены неизмененной части редким символом и последующим возвратом ее обратно

sed '
    s/\(^\s*\|ASSERT\. \)SP\./\1\a/g
    s/SP\./\n&/g
    s/\a/SP./g
    '
1
27.01.2020, 23:34

Теги

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