Mit PHP
Ich möchte zwei Textdateien vergleichen, die erste Datei ist die wichtigste Datei, die der andere mit ihm vergleichen sollte. Wenn eine Zeile von first.txt
nicht in second.txt
existiert oder unterscheidet sich von ihm, das Skript sollte den ganzen Block dieser Zeile zurückkehren, zum Beispiel:Extrahieren Sie Textblock mit 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
!
Sekunde. 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
!
Für den Vergleich extrahiert ich die first.txt
Linien mit file()
und sie in der second.txt
, nun die IP-Adresse suchen unterscheidet sich in der dritten Reihe von second.txt
, dann sollten wir den Block dieser Linie (von interface
zum Knall (!
)) zurück:
interface Vlan11
description xxx
ip address 20.20.20.20 255.255.255.255
shutdown
!
oder in der second.txt
einem der vlan
Blöcke existiert nicht, so sollte es zurückkehrt:
vlan 17
name sth
!
es ist einfach, einen regulären Ausdruck zu schreiben, die den Block zwischen den beiden Pony extrahiert, sondern weil ich sollte ich an den Anfang des Blocks don‘zurück Ich weiß, wie das Muster beginnen sollte h.
Auch ich habe eine andere Idee, dass jeder Block mit einem Zeichen beginnt, dann einige Zeilen, die mit einem Leerzeichen und dann einen Knall am Ende beginnen, aber das Problem besteht darin, wie das Muster zu starten.
Würde 'diff' nicht genau das tun, was Sie wollen? – Jan
Sollen die Blöcke in den zwei Dateien in der gleichen Reihenfolge sein? –
was 'diff'? @ Jan –