Aquí hay una muestra del contenido del archivo:
<:abc>test file name <:/abc> XYZ 1122
El contenido XML es bastante pesado y grande.
En el directorio en el que estoy trabajando, quiero crear un subdirectorio XYZ
(segunda columna) si no está allí, y en este subdirectorio crear el archivo 1122.raw
(tercera columna) y agregar el contenido XML ( <:abc>test file name <:/abc>
) a ese archivo.
Respuesta1
El comentario de @MelBurslan es correcto, en general no debes esperar que la gente escriba scripts por ti, ya que StackExchange no sirve para eso. Pero en este caso, tuve algo de tiempo: aquí hay un script que hace lo que pide la pregunta, asumiendo que el XML no contiene nuevas líneas y que las partes del subdirectorio y del nombre de archivo no contienen ningún carácter especial:
#!/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;
Guárdelo como process.pl
y ejecútelo ./process.pl inputfile.xml
.