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
我有一个文件,我们称之为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