不是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
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
join list1 list2 | awk '{print $1,$3-$2}'