Cada linha em um arquivo (XML como parte do arquivo)

0

Aqui está uma amostra do conteúdo do arquivo:

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

O conteúdo XML é bem pesado e grande.

No diretório em que estou trabalhando, desejo criar um subdiretório XYZ (segunda coluna), se não estiver lá, e, sob esse subdiretório, criar o arquivo 1122.raw (terceira coluna) e ter o conteúdo XML ( <:abc>test file name <:/abc> ) adicionado a esse arquivo.

    
por Coolguy 19.05.2016 / 22:04

1 resposta

1

@ O comentário de MelBurslan está correto, você não deve esperar que as pessoas escrevam scripts para você, já que não é para isso que o StackExchange é. Mas neste caso, eu tive algum tempo: aqui está um script que faz o que a pergunta faz, assumindo que o XML não contém nenhuma nova linha, e que as partes do subdiretório e do nome do arquivo não contêm caracteres especiais:

#!/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;

Salvar como process.pl e executar ./process.pl inputfile.xml .

    
por 20.05.2016 / 00:00