Ich habe eine große XML-Datei generiert von Informatica, die mehrere Vorkommen von leeren XML-Tags wie unten angegeben hat, die aus der Datei entfernt werden müssen.Entfernen Sie alle Instanzen von mehrzeiligen Zeichenfolge aus UNIX-Datei
<Person> <Address> </Address> </Person>
Die Datei enthält etwa 600-800 Vorkommen der über 6-Zeilen Text, von denen alle entfernt werden muss.
Zwischen diesen Tags können sich Daten befinden. In diesem Fall sollten sie nicht entfernt werden. Die Entfernung sollte nur dann erfolgen, wenn der Text genau wie oben angezeigt wird. PS-Perl-Befehl funktioniert nicht in meiner UNIX-Box
Sie nicht angeben, welche Sprache/Werkzeug, das Sie‘ Ich schaue mir das an, also nehme ich Shell oder eingebaute Tools an. Sie könnten eine einfache linienorientierte Lösung mit einem awk-Skript erstellen. Suchen Sie nach dem Start-Tag, setzen Sie ein Flag und überspringen Sie die Ausgabe, bis Sie das End-Tag sehen. Aber es wäre robuster, dies mit einem tatsächlichen XML-Parser zu tun. Sehen Sie sich Python an - Sie können einen einfachen XML-Parser ganz einfach erhalten. – gavinb
Die Dateien werden von Informatica auf einem UNIX-Server generiert. Ich freue mich auf einen UNIX-Shell-Befehl, um die Datei zu bereinigen, bevor Sie sie an Berichtsserver weiterleiten. Wäre nicht – sandy111
Die Dateien werden von Informatica auf einem UNIX-Server generiert. Ich freue mich auf einen UNIX-Shell-Befehl, um die Datei zu bereinigen, bevor Sie sie an Berichtsserver weiterleiten. Wäre es nicht möglich, ein Tool wie Python zu verwenden? Außerdem müssen die Zeilen nur entfernt werden, wenn zwischen diesen Tags keine Daten vorhanden sind, d.h. sie erscheinen wie sie sind. Eine Übereinstimmung nur der Anfangs- und Endzeichenfolge würde den Zweck nicht lösen. – sandy111