Jede Zeile in einer Datei (XML als Teil der Datei)

Jede Zeile in einer Datei (XML als Teil der Datei)

Hier ist ein Beispiel des Inhalts der Datei:

<:abc>test file name <:/abc>   XYZ  1122

XML-Inhalte sind ziemlich schwer und groß.

Unter dem Verzeichnis, in dem ich arbeite, möchte ich (sofern noch nicht vorhanden) ein Unterverzeichnis XYZ(zweite Spalte) erstellen und unter diesem Unterverzeichnis die Datei 1122.raw(dritte Spalte) erstellen und den XML-Inhalt ( <:abc>test file name <:/abc>) zu dieser Datei hinzufügen.

Antwort1

Der Kommentar von @MelBurslan ist richtig, Sie sollten im Allgemeinen nicht erwarten, dass Leute Skripte für Sie schreiben, da StackExchange dafür nicht gedacht ist. Aber in diesem Fall hatte ich etwas Zeit: Hier ist ein Skript, das das tut, was die Frage verlangt, vorausgesetzt, dass das XML keine Zeilenumbrüche enthält und dass die Unterverzeichnis- und Dateinamenteile keine Sonderzeichen enthalten:

#!/usr/bin/perl -n

my $nameRE = qr/[\w.]+/;

chomp;
m/^(.*)\s+($nameRE)\s+($nameRE)\s*$/ or do { warn "didn't match line $.: $_\n"; next };
my ( $xml, $dir, $line ) = ( $1, $2, $3 );

mkdir $dir;
open my $f, ">>", "$dir/$line.raw";
print $f "$xml\n";
close $f;

Speichern Sie es unter process.plund führen Sie es aus ./process.pl inputfile.xml.

verwandte Informationen