【发布时间】:2017-09-23 12:06:20
【问题描述】:
我是 perl 新手。我有下面的文本文件,从那里我只想要一个 Time 列,下一列是值。如何在 perl 中创建带有我想要的输出的文本文件。
Time Value Time Value Time Value
1 0.353366497 1 0.822193251 1 0.780866396
2 0.168834182 2 0.865650713 2 0.42429447
3 0.323540698 3 0.865984245 3 0.856875894
4 0.721728497 4 0.634773162 4 0.563059042
5 0.545131335 5 0.029808531 5 0.645993399
6 0.143720835 6 0.949973296 6 0.14425803
7 0.414601876 7 0.53421424 7 0.826148814
8 0.194818367 8 0.942334356 8 0.837107013
9 0.291448263 9 0.242588271 9 0.939609775
10 0.500159997 10 0.428897293 10 0.41946448
我试过下面的代码:
use strict;
use warnings;
use IO::File;
my $result;
my @files = (q[1.txt],q[2.txt],q[3.txt]);
my @fhs = ();
foreach my $file (@files) {
my $fh = new IO::File $file, O_RDONLY;
push @fhs, $fh if defined $fh;
}
while(1) {
my @lines = map { $_->getline } @fhs;
last if grep { not defined $_ } @lines[0..(@fhs-1)];
my @result=join(qq[\t], map { s/[\r?\n]+/ /g; $_ } @lines ) . qq[\r\n];
open (MYFILE, '>>Result.txt');
print (MYFILE "@result");
close (MYFILE);
}
【问题讨论】:
-
我没有看到任何代码。最好更新您的问题。通常你应该提供两个输入数据。预期输出。并且至少尝试解决问题的代码
-
我可以将三个文本文件合并为一个。现在我有 6 列文本文件,从那里我想只显示前四列。我该怎么做?
-
再一次,如果不查看您的代码并知道您拥有的代码,这很难说。不管你可能想看看 split()
-
我试过下面的代码:
use strict; use warnings; use IO::File; my$result; my @files = (q[1.txt],q[2.txt],q[3.txt]); my @fhs = (); foreach my $file (@files) { my $fh = new IO::File $file, O_RDONLY; push @fhs, $fh if defined $fh; } while(1) { my @lines = map { $_->getline } @fhs; last if grep { not defined $_ } @lines[0..(@fhs-1)]; my@result=join(qq[\t], map { s/[\r?\n]+/ /g; $_ } @lines) . qq[\r\n]; open (MYFILE, '>>Result.txt'); print (MYFILE "@result"); close (MYFILE); } -
@James:
(@fhs-1)$#fhs
标签: perl