gpt4 book ai didi

linux - 在 RHEL7.4 上合并(SUM)来自 4 个文件的数据

转载 作者:太空狗 更新时间:2023-10-29 11:20:57 24 4
gpt4 key购买 nike

我有 4 个不同的文件,每个文件都具有相同的结构,然后调用 101.txt 到 104.txt。这是一个片段作为例子

#Per-Day Traffic Summary
#-----------------------
# date received delivered deferred bounced rejected
# --------------------------------------------------------------------
Jan 31 2018 28131 34709 1305 392 34647
Feb 1 2018 32863 40714 1674 497 41694
Feb 2 2018 31113 38724 2353 543 41251
Feb 3 2018 28336 36913 3201 799 40219
Feb 4 2018 28442 36951 2257 865 39910
Feb 5 2018 29837 39448 1112 486 38566
Feb 6 2018 29844 38999 1609 497 39683

我想每天合并来自每个文件的“接收”、来自每个文件的“交付”等,以便为 gnuplot 生成一个文件。例如,如果 101 和 102 在 1 月 31 日的金额相同,则收到的金额将为 56262。我总共有 4 个文件要组合成一个具有相同结构的输出文件。

最佳答案

可以用 perl 脚本来完成:

perl sum.pl 101.txt 102.txt 103.txt 104.txt > result.txt

其中 sum.pl 包含:

#!/usr/bin/perl

my %processed_header;
my %data;

while (<>)
{
if (/^(#.+)/)
{
print unless ($processed_header{$1});
$processed_header{$1} = 1;
}
else
{
next unless(/(\w\w\w\s+\d+\s\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/);

$data{$1}{'ord'} = scalar(keys(%data)) unless ($data{$1});

$data{$1}{'rec'} += $2;
$data{$1}{'del'} += $3;
$data{$1}{'def'} += $4;
$data{$1}{'bou'} += $5;
$data{$1}{'rej'} += $6;
}
}

for (sort { $data{$a}{'ord'} <=> $data{$b}{'ord'} } (keys(%data)))
{
printf("%14s %10d %10d %10d %10d %10d\n",
$_, $data{$_}{'rec'}, $data{$_}{'del'},
$data{$_}{'def'}, $data{$_}{'bou'}, $data{$_}{'rej'});
}

关于linux - 在 RHEL7.4 上合并(SUM)来自 4 个文件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com