如何从 2 个文件中提取数据并将其放入不同的文件中(一个文件中的一行和另一个文件中的另一行等等......)?
How to extract data from 2 files and put it in different file (one line from one file and another line from other file and on..)?
我必须文件说 one.txt 和 two.txt。
one.txt 有以下数据 -
ab
cd
ef
two.txt 有以下数据 -
gh
ij
kl
**我想在不同的文件中像这样输出
output.txt -
ab
gh
cd
ij
ef
kl
谁能帮忙解决这个问题。
我曾尝试同时打开两个文件,但不知何故我无法做到这一点..
您只需从交替文件中读取行。
例如:
open my $fh1, '<', $file1 or die "[=10=]: $file1: $!\n";
open my $fh2, '<', $file2 or die "[=10=]: $file2: $!\n";
while () {
defined(my $line1 = readline $fh1) or last;
defined(my $line2 = readline $fh2) or last;
print $line1, $line2;
}
或者你可以在循环条件下读取,但它可能看起来有点奇怪:
while (
defined(my $line1 = readline $fh1) &&
defined(my $line2 = readline $fh2)
) {
print $line1, $line2;
}
一旦最短的文件用完行,这将停止。
如果你总是想处理所有的行,你可以使用下面的解决方案(推广到两个以上的文件):
my @fhs = ($fh1, $fh2);
while (@fhs) {
my $fh = shift @fhs;
defined(my $line = readline $fh) or next;
push @fhs, $fh;
print $line;
}
这将继续从 @fhs
中的第一个文件句柄读取行,然后旋转数组(将第一个句柄移动到最后一个位置)。当文件句柄用完行时,它会从数组中删除。这一直持续到所有句柄都用完。
如果您希望它在第一个句柄用完行时立即停止,请将 next
更改为 last
。
我必须文件说 one.txt 和 two.txt。
one.txt 有以下数据 -
ab
cd
ef
two.txt 有以下数据 -
gh
ij
kl
**我想在不同的文件中像这样输出
output.txt -
ab
gh
cd
ij
ef
kl
谁能帮忙解决这个问题。
我曾尝试同时打开两个文件,但不知何故我无法做到这一点..
您只需从交替文件中读取行。
例如:
open my $fh1, '<', $file1 or die "[=10=]: $file1: $!\n";
open my $fh2, '<', $file2 or die "[=10=]: $file2: $!\n";
while () {
defined(my $line1 = readline $fh1) or last;
defined(my $line2 = readline $fh2) or last;
print $line1, $line2;
}
或者你可以在循环条件下读取,但它可能看起来有点奇怪:
while (
defined(my $line1 = readline $fh1) &&
defined(my $line2 = readline $fh2)
) {
print $line1, $line2;
}
一旦最短的文件用完行,这将停止。
如果你总是想处理所有的行,你可以使用下面的解决方案(推广到两个以上的文件):
my @fhs = ($fh1, $fh2);
while (@fhs) {
my $fh = shift @fhs;
defined(my $line = readline $fh) or next;
push @fhs, $fh;
print $line;
}
这将继续从 @fhs
中的第一个文件句柄读取行,然后旋转数组(将第一个句柄移动到最后一个位置)。当文件句柄用完行时,它会从数组中删除。这一直持续到所有句柄都用完。
如果您希望它在第一个句柄用完行时立即停止,请将 next
更改为 last
。