Использование PHP
Я хочу сравнить два текстовых файла, первый файл является основным, который должен сравнить с другим. Если линия first.txt
не существует в second.txt
или отличается от него, сценарий должен возвращать весь блок этой строки, например:Извлечь блок текста с использованием regex
first.txt
interface Vlan11
description xxx
ip address 10.10.10.10 255.255.255.255
shutdown
!
vlan 34
!
vlan 17
name sth
!
route-map sth
match ip address exm
set ip next-hop 1.2.3.4
!
второй. TXT
interface Vlan11
description xxx
ip address 20.20.20.20 255.255.255.255
shutdown
!
vlan 34
!
route-map sth
match ip address exm
set ip next-hop 1.2.3.4
!
Для сравнени я извлек first.txt
линии, используя file()
и искать их в second.txt
, теперь IP адрес отличается в третьей строке second.txt
, то мы должны вернуть блок этой линии (от interface
до взрыва (!
)):
interface Vlan11
description xxx
ip address 20.20.20.20 255.255.255.255
shutdown
!
или в second.txt
один из vlan
блоков не существует, поэтому она должна возвращается:
vlan 17
name sth
!
это легко написать регулярное выражение, которое извлекает блок между двумя ударами, а потому, что я должен вернуться к началу блока I DON» Знать, какой шаблон должен начинаться с ума час
Также у меня есть другая идея, что каждый блок начинается с символа, затем некоторые строки, начинающиеся с пробела, а затем в конце, но проблема заключается в том, как запустить шаблон.
Не будет 'diff' делать именно то, что вы хотите? – Jan
Блоки должны быть в том же порядке в двух файлах? –
который 'diff'? @Jan –