各行をファイルに入れます(ファイルの一部であるXML)。

各行をファイルに入れます(ファイルの一部であるXML)。

以下はファイルの内容の例です。

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

XMLコンテンツはかなり重くてかさばります。

私が作業しているディレクトリの下にサブディレクトリ(2番目の列)がない場合は、作成し、XYZこのサブディレクトリの下にファイル1122.raw(3番目の列)を作成し、<:abc>test file name <:/abc>そのファイルにXMLコンテンツ()を追加しようとしています。

答え1

@MelBurslanのコメントは正しいです。通常、StackExchangeの目的ではないため、人々がスクリプトを書くことを期待してはいけません。しかし、この場合は少し時間がかかりました。 XMLに改行文字が含まれておらず、サブディレクトリとファイル名の部分に特殊文字が含まれていないと仮定し、質問に必要なタスクを実行するスクリプトは次のとおりです。

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

別の名前で保存しprocess.plて実行してください./process.pl inputfile.xml

関連情報