是否有返回 txt 文件倒数第二行的函数或排列?



文档带来三行或更多行,即列表的大小doc03053220190606125901(1).txt.total.txt

Tamafo total: 512 MB
Total 43046✔
Total 14758

doc05889820190606122032(2).txt.total.txt

Tamano total: 1.0 GB
Total 156253✔
, Total 761273

的 txt 文档,我只想在最后一行之前打印第一行

我尝试在没有推送功能的情况下应用 pop 功能以再次运行 pop 并给我带来倒数第二行 或者在打印时我举一个例子


my @arreglo = $row;
pop @arreglo "$filesn"
print @arreglo[-1]"n"; 
foreach $filename (@FILES) {
## muestra el contenido de la variable
print $filename, "n"; 
## abre el archivo o manda una excepcion 
open(my $file, '<', $filename) 
or die "Could not open file '$filename' $!";
while (my $row = <$file>) {
chomp $row;   
print ("$rown");
}

Gama,这里不需要复杂的脚本。 Unix tail 命令将为您完成此操作。

@last_two_lines = `tail -n2 $filename`;
print $last_two_lines[0];

要求:打印倒数第二行输入。

显而易见的解决方案是将所有输入压缩到数组中,但如果输入太大,则会浪费内存。您还应该处理输入少于两行的情况。

我的解决方案:保留一个只保存最后两行的数组。在到达输入的末尾之前,您不会知道您已经看到了倒数第二行。

#!/usr/bin/perl
use strict;
use warnings;
my @last2 = ();
while (<>) {
if (scalar @last2 >= 2) {
shift @last2;
}
push @last2, $_;
}
if (scalar @last2 >= 2) {
print $last2[-2];
}
else {
die "Not enough inputn";
}

最新更新