В обновленном регулярном выражении отсутствует пробел, который был в предыдущем регулярном выражении.
ignore = r"^( _st_.goboom|print 'SageT| ?_st_.current_tex_line)"
ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))"
Я думаю, что требовалось просто
ignore = r"^( _st_.goboom|print ('SageT| ?_st_.current_tex_line))"
Что касается объяснения... обычно пробелы в регулярных выражениях являются буквальными символами.
Так вот, я допускаю, что это могло быть изменением само по себе. Вы пошли от того, что сказали, что собираетесь игнорировать
" _st_.goboom"
"print 'SageT"
"_st.current_tex_line"
" _st.current_tex_line"
на игнорирование
" _st_.goboom"
"print 'SageT"
"print '_st.current_tex_line"
"print ' _st.current_tex_line"
(Обратите внимание :на все '.' символы в регулярном выражении также соответствуют любому символу, но я не хочу иметь 258 *6 строк или около того строк, объясняющих, какие именно шаблоны игнорировались.)
Заполнить ассоциативный массив a[".."]
ключами хостов Linux, упомянутых в файле vms. Затем отметьте хосты, видимые в файле ansible, и напечатайте то, что осталось в конце.
awk '
NR==FNR {a[$1];next}
$1=="[all_linux_hosts]",0 {
if ( $1 in a ) delete a[$1]
};1
END {
for (host in a) print host
}
' LinuxVms.txt /etc/ansible/hosts
[test]
8.8.8.8
12.12.12.12
13.13.13.13
[all_linux_hosts]
1.1.1.1
2.2.2.2
12.12.12.12
3.3.3.3