Поиск различий между файлами с помощью цикла for в bash или python

В обновленном регулярном выражении отсутствует пробел, который был в предыдущем регулярном выражении.

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 строк или около того строк, объясняющих, какие именно шаблоны игнорировались.)

2
04.02.2021, 13:44
1 ответ

Заполнить ассоциативный массив 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
0
18.03.2021, 22:32

Теги

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