파일의 각 행(파일의 일부인 XML)

파일의 각 행(파일의 일부인 XML)

다음은 파일 내용의 샘플입니다.

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

XML 콘텐츠는 꽤 무겁고 큽니다.

XYZ내가 작업 중인 디렉터리 아래에 하위 디렉터리 (두 번째 열)가 없으면 만들고 싶습니다 . 이 하위 디렉터리 아래에 파일(세 번째 열)을 만들고 해당 파일에 1122.rawXML 콘텐츠( )를 추가합니다 .<:abc>test file name <:/abc>

답변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.

관련 정보