Я пытаюсь найти строку после 1 пробела в строке, если она существует, затем извлечь всю строку и сохранить в другой переменной.Я использую ANSIBLE и регулярное выражение.Если строка существует в любом другом месте, то она не должна совпадать.
Я попытался использовать regex_match и выбрать, но получил ошибку.
vars:
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | regex_search('^(?=.*\b INPUT\b)(?:\S+){1}(\S*.*)')}}"
Ошибка всегда появляется в одном и том же месте "(?: \ S +)".
ERROR! Syntax Error while loading YAML.
found unknown escape character 'S'
The offending line appears to be:
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | regex_search('^(?=.*\b INPUT\b)(?:\S+){1}(\S*.*)')}}"
^ here
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | select('match', '^(?=.*\b INPUT\b)(?:\S+){1}(\S*.*)' | list | first}}"
^ here
Я также пытался включить escape-символ для /, но также получил ошибку,
ERROR! Syntax Error while loading YAML.
found unknown escape character 'S'
The offending line appears to be:
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | regex_search('^(?=.*/\b INPUT/\b)(?:/\S){1}(/\S*.*)')}}"
^ here
Файл моей переменной
-P INPUT ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 3.3.3.3/32 -j ACCEPT
-A INPUT -j RH-Firewall
-N RH-Firewall
-A RH-Firewall -j INPUT
-A RH-Firewall -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A RH-Firewall -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A RH-Firewall-1 -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A RH-Firewall -p icmp -m icmp --icmp-type 11 -j ACCEPT
target_rule_set должен содержать только первые 5 строк.Точно так же, если я сопоставляю RH-Firewall, он должен содержать строки 6-11.