Cada línea en un archivo (XML como parte del archivo)

Cada línea en un archivo (XML como parte del archivo)

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.ply ejecútelo ./process.pl inputfile.xml.

información relacionada