如何计算两个文件中的行数

时间:2013-06-30 06:04:26

标签: perl

我想问一下如何在Perl中计算行数。

示例:

档案a.txt

ikhsan
faqih 
kamal 
jundi
iqbal

文件b.txt

ikram
izzul
ibnu
qoyyim

问题是如何计算Perl中2文件中的所有行。

如果我只想阅读一个文件,我的代码是:

这是我的data.txt

a
b
c
d

我的代码

open (FILE, "data.txt") or die "Can't open file: $!";

my ($lines) = (0);
while (<FILE>) {
  $lines++;
  print $lines;

如果我执行:perl countlines.pl

C:\perl> perl countlines.pl
4
C:\perl>

我的问题是如何计算2个文件中的所有行?

2 个答案:

答案 0 :(得分:2)

这适用于任意数量的文件

perl -lne 'END { print $. }' a.txt b.txt

工作原理

使用-ln标志将perl编译为脚本,如下所示:

BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
    chomp $_;
    sub END {
        print $.;
    }
    ;
}

这将循环播放给定文件列表中的所有文件并且什么都不做!

但是有一个特殊的perl变量$.,它是读取行数的计数器

因此,在脚本结束时,会打印出来,显示文件中的总行数

答案 1 :(得分:1)

我建议使用<>的自动表单:

$count++ while <>;
print $count;

用法:

perl countlines.pl a.txt b.txt

如果您想手动完成,只需重复您的过程:

my ($lines) = (0);
open (FILEA, "a.txt") or die "Can't open file: $!";
while (<FILEA>) { $lines++; }
open (FILEB, "b.txt") or die "Can't open file: $!";
while (<FILEB>) { $lines++; }