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.pl
und führen Sie es aus ./process.pl inputfile.xml
.