Perl 脚本在列中找到最大的数字,然后在其他列中打印出该数字和相应的值

Perl script to find biggest number in column then print out that number and corresponding value in other column

我有一个文件,我们称之为file.txt 档案如下....

First Last Age Years
John  M    30  2.0
Alex  K    21  3.0
Carl  G    58  4.0

我正在尝试编写一个 Perl 脚本,它将在“年龄”和“年”列中添加相应的行,然后打印与最大数字对应的姓名。示例输出为“Carl G at 62 years old”。 “62”来自添加 58 和 4.0。我用 awk 完成了这个...

 awk
{name= OFS  OFS "at" OFS }
NR>1 {age =  + }
age>ageMax {ageMax = age; data = name; next}
age == ageMax {data = data ageMax ORS name}
END {
print data ageMax}

这可以用 perl 脚本完成吗?

毫无疑问,这个问题可以在 Perl 中解决。

以下代码示例演示了如何实现预期结果

use strict;
use warnings;
use feature 'say';

my @header = split(' ', <DATA>);
my $max_age = 0;
my $found;

while( <DATA> ) {
    my($first,$last,$age,$years) = split;
    my $sum = $age+$years;
    $found  = "$first $last at $sum years old"
        if $sum > $max_age;
    $max_age = $sum;
}

say $found;

__DATA__
First Last Age Years
John  M    30  2.0
Alex  K    21  3.0
Carl  G    58  4.0

输出

Carl G at 62 years old

参考:split