【发布时间】:2013-02-26 16:38:34
【问题描述】:
我正在尝试编写一个代码,从文件 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 中。我尝试了 How to extract a particular column of data in 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;
}
【问题讨论】: