【发布时间】:2014-06-10 06:37:13
【问题描述】:
我有一个文本文件,其中包含以下内容:
24-04-2014 14:14:47 100-10 clear "TSP:hfe-tus-02.RtpEvtMgr01: "
24-04-2014 14:15:00 226-8008 information "APPL:hfe-tus-02.HLR_AFW_SS7_"
24-04-2014 14:15:00 226-9008 information "APPL:hfe-tus-02.HLR_AFW_SS7_"
24-04-2014 14:15:00 103-88 information "TSP:hfe-tus-02.RtpRecMgr01: "
24-04-2014 14:15:10 236-434 clear "APPL:hfe-tus-02.IMS_DIAMETER"
24-04-2014 14:15:10 236-461 clear "APPL:hfe-tus-02.IMS_DIAMETER"
24-04-2014 14:15:10 236-461 clear "APPL:hfe-tus-02.IMS_DIAMETER"
24-04-2014 14:15:11 236-435 major "APPL:hfe-tus-02.IMS_DIAMETER"
24-04-2014 14:15:11 236-464 information "APPL:hfe-tus-02.IMS_DIAMETER"
24-04-2014 14:15:15 103-91 information "TSP:hfe-tus-02.RtpRecMgr01: "
挑战是计算第 3 列中的唯一值(例如 100-10)。然后我们也必须随着时间的推移传播它(比如说 5 分钟的间隔)。时间在第 2 列,日期在第 1 列。这样,我们可以得到每个代码在 5 分钟间隔内的唯一输出和进程。示例输出可以是这样的。
Date,100-10, 226-8008,226-9008,236-434
24-04-2014 14:00:00,2,5,10,13
24-04-2014 14:05:00,6,4,8,10
24-04-2014 14:10:00,1,8,6,9
24-04-2014 14:15:00,3,4,7,8
对不起,我几乎迷失了从任何事情开始。 PS。第 3 列中可以有许多唯一代码,但为了简单起见,我放了一些。
===
回答
我的代码是这样的,它也可以工作。所以想了几天后分享一下。
cut -f4 -d " " RtpFile | sort -u
awk '$0>=from&&$0<=to' from="2014/03/20 15:13" to="2014/08/19 14:31" infile
my $fields = `cut -c 28-38 /dump/TspTrace/RtpTrcError/RtpTrcError.0090 | sort -u`; // cut columns to get codes
my @arr = split / /, $fields;
my $files1 = ls -lrt /dump/TspTrace/RtpTrcError/ | grep "Apr 24" | cut -c 55-70
my @files = split / /, $files1;
> /tmp/Output.txt
foreach (@files) {
`cat /dump/TspTrace/$_ >> /tmp/Output.txt`;
}
【问题讨论】:
-
这对我来说毫无意义:在给定输入的情况下,您如何获得示例输出?
-
我认为输出不一定与输入匹配,但输出是每个唯一标签的计数的列表。所以输出是说标签 100-10 在 1400 和 1405 之间出现了 2 次,在 1405 和 1410 之间出现了 6 次。
-
欢迎来到 StackOverflow。我对这个问题投了反对票,因为您没有表现出自己解决问题的努力,而且定义的问题还不够清楚,无法提供合理的建议来帮助您。
-
是的,威廉,没错。