각 줄을 파일에 넣습니다(파일의 일부인 XML).

각 줄을 파일에 넣습니다(파일의 일부인 XML).

다음은 파일 내용의 예입니다.

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

XML 콘텐츠는 상당히 무겁고 부피가 큽니다.

내가 작업 중인 디렉터리 아래에 하위 디렉터리(두 번째 열)가 없으면 만들고, XYZ이 하위 디렉터리 아래에 파일 1122.raw(세 번째 열) 을 만들고 <: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.

관련 정보