ファイルAからデータを抽出し、指定された開始点と終了点を持つ列データのみをファイルBに貼り付けるコードを作成しようとしています。これまでのところ、AからBにすべてのデータを正常にコピーすることしかできませんが、そうではありません列をフィルタリングしてどこにでも行きます。splice と grep を調べてみましたが、役に立ちませんでした。Perl の経験はありません。データには列ヘッダーがありません。サンプル: データは実際には数千行の長さです - 関数にデータを挿入できません
1. AAA 565 u8y 221
2. ABC 454 9u8 352
3. ADH 115 i98 544
4. AKS 352 87y 454
5. GJS 154 i9k 141
3 番目の列 (開始:8、長さ:3) のすべての一意の値をファイル B にコピーする必要があります。Perlで特定の列のデータを抽出する方法で提供されているソリューションを試しました。無駄に。
ヒントや支援をありがとう!
#!/usr/bin/perl
use strict;
use warnings;
#use Cwd qw(abs_path);
#my $dir = '/home/
#$dir = abd_path($dir);
my $filename = "filea.txt";
my $newfilename = "fileb.txt";
#Open file to read raw data
open (DATA1, "<$filename") or die "Couldn't open $filename: $!";
#Open new file to copy desired columns
open (DATA2, ">$newfilename") or die "Couldn't open $newfilename: $!";
#Copy data from original to new file
while (<DATA1>) {
#DATA2=splice(DATA1, 0,5);
print DATA2 $_;
my @fifth_column = map{(split)[1]} split /\n/, $newfilename;
}