0

不是 100% 确定如何做到这一点。我想我会列出每个列表并从两者中创建一个数组。我可以得到差异,但我将如何列出差异?

列出第 1 天

xxxx-r01 48
xxxx-r02 38
xxxx-r03 28

列出第 2 天

xxxx-r01 44
xxxx-r02 39
xxxx-r03 29

期望的结果。

xxxx-r01 -4
xxxx-r02 1
xxxx-r03 1
4

3 回答 3

4

固定列数(第二个字段的差异):

$ awk 'FNR==NR{a[NR]=$2;next}{print $1,$2-a[FNR]}' list1 list2
xxxx-r01 -4
xxxx-r02 1
xxxx-r03 1

可变列数(最后一个字段的差异):

$ awk 'FNR==NR{a[NR]=$NF;next}{$NF=$NF-a[FNR]}1' list1 list2
xxxx-r01 -4
xxxx-r02 1
xxxx-r03 1
于 2013-05-10T12:00:49.320 回答
0

在 Perl 中,你可以这样做,

use strict;
use Data::Dumper;

my @arr1 = ( "xxxx-r01 48", "xxxx-r02 38", "xxxx-r03 28");
my @arr2 = ( "xxxx-r01 44", "xxxx-r02 39", "xxxx-r03 29");

my %seen1 = map { split/ /, $_ } @arr1;
my %seen2 = map { split/ /, $_ } @arr2;


foreach my $test (keys %seen2) {
 my $diff = $seen2{$test} - $seen1{$test};
 print"$test:$diff\n";
}

输出:

xxxx-r01:-4
xxxx-r02:1
xxxx-r03:1
于 2013-05-10T12:15:57.780 回答
0
 join list1 list2 | awk '{print $1,$3-$2}'
于 2013-05-10T12:28:36.993 回答