我已经编写了一个perl代码,用于写入逐行处理的行数。我想只获取文件的最后一个行号。代码如下:
#!/usr/bin/perl
using strict;
using warnings;
my $qbsid_dir = "/root/deep/";
opendir (DIR, "$qbsid_dir") or die "Cannot open the directory!\n";
while (my $file = readdir DIR){
next if ($file =~ m/^\./);
open(FH, "$qbsid_dir/$file") or die "Cannot open the file\n";
while (my $line = <FH>){
print "$.\n";
}
close (FH);
}
closedir (DIR);
'/ root / deep'目录包含两个文件。一个有90行,另一行有100行写在文件中。
我希望打印这些数字而不是单个数字,例如1..90和1..100 by $。
感谢。
答案 0 :(得分:4)
你真的想使用Perl吗?
wc -l <File>
答案 1 :(得分:2)
如果您想要最后一个行号,请等待$.
打印到while
循环之外,以便处理该文件:
open my $fh, '<', "$qbsid_dir/$file" or die "Can't open $file: $!";
1 while (<$fh>);
print "$file -> $.\n";
close $fh;
请务必阅读:perlfaq5 - How do I count the number of lines in a file?
答案 2 :(得分:0)
试试这个。它还会打印文件名的最后一个数字。
$filedir = '/root/deep/';
opendir (dir, "$filedir");
@directory = readdir(dir);
@grep = grep{m/.*\.txt/g} @directory; #It matches the particular file format
foreach $dir(@grep){
open(file,"$filedir/$dir");
@line =<file>;
$total = @line; #$total variable store the last file number from array (@line)
print "File $dir Last line \t: $total\n";
}
答案 3 :(得分:0)
你也可以使用oneliner
perl -nE '}{say $.' filename
#or
command | perl -nE '}{say $.'
测试
$ seq 10 | perl -nE '}{say $.'
10
$ seq 10 | wc -l
10