그래서 여러 개의 열과 행 (각각 6000 개의 홀수 행과 +60 열씩)이있는 여러 개의 큰 CSV 파일이 있으므로 별도의 CSV 파일로 분할하고 싶습니다. 예를 들면 각 파일의 첫 번째 열의 첫 번째 행에 표시되는 문자열을 명명 될 주어진 문자열에서 (문자열 사이 상이 라인 수) ... :Perl : 지정된 문자열에서 CSV를 분할하고 특정 문자열을 파일 이름으로 사용
Peter B1 C1 D1
A2 B2 C2 D2
A3 B3 C3 D3
END B4 C4 D4
Jack B5 C5 D5
A6 B6 C6 D6
A7 B7 C7 D7
END B8 C8 D8
Billy B9 C9 D9
A10 B10 C10 D10
A11 B11 C11 D11
END B12 C12 D12
그래서이 있어야 3 Peter, Jack 및 Billy라는 파일에이 파일에 대해 쓰여질 마지막 행임을 알리는 END 단어가 있습니다. Peter는 범위 A1 (Peter라는 단어 포함)을 D4에 포함합니다. 잭 A5에서 D8, 빌리 A9에서 D12.
use strict;
use warnings;
### INPUT
my $split_woord = 'END'; #word that signals file to be split
print "Input file: ";
my $file_name = <STDIN>;
my $input_file = "file locataion/$file_name.csv";
### OPEN
open (INPUT, ">", "$input_file") or die "Can't open $file_name: $!\n";
my $name= undef;
while (<INPUT>){
my $line = $_;
my ($a,$b,$c,$d)=split('\,', $line);
until ($a eq $split_word){ #loop until column 1 reads 'END', then restart
$name eq $a; #want to indictae first line
my $output_file = "file_location/$name.csv";
open (OUTPUT, ">>", "$output_file") or die "Can't create $output_file: $!\n";
print OUTPUT "$a,$b,$c,$d\n";
next;
}
}
exit;
내가 제대로 루프에 그것을 얻을 수없는 것, 또한 파일의 이름으로 행동하는 첫 번째 열/행을 사용하는 고군분투 :
지금까지이있다. 어떤 도움이라도 대단히 감사하게 될 것입니다 !!! 모든 TIA
'csplit'는 쉘 명령입니다. 해봤 어 ?? – Ashish
또한 기타 문의 사항을 확인하십시오. http://stackoverflow.com/questions/8272017/split-files-based-on-file-content-and-pattern-matching – Ashish
여기에 과제를 수행하겠습니까? $ name eq $ a; # 첫 줄을 나타낼 것 $ name = $ a; – jmcneirney