ファイルの内容のサンプルを次に示します。
<:abc>test file name <:/abc> XYZ 1122
XML コンテンツは非常に重く、サイズも大きいです。
作業中のディレクトリの下にサブディレクトリXYZ
(2 列目) がない場合には作成し、このサブディレクトリの下にファイル1122.raw
(3 列目) を作成して、そのファイルに XML コンテンツ ( <:abc>test file name <:/abc>
) を追加します。
答え1
@MelBurslan さんのコメントは正しいです。一般的に、他の人がスクリプトを書いてくれることを期待すべきではありません。それは StackExchange の目的ではないからです。しかし、今回の場合は時間がありました。XML に改行が含まれず、サブディレクトリとファイル名の部分に特殊文字が含まれていないと仮定して、質問の要求に応えるスクリプトを 1 つ示します。
#!/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
。