我有每月轮换的日志文件,如下所示。这些文件的名称为transc-2301.log
(transc-YMM)。一年中的每个月都有一个文件。我需要一个简单的bash命令来查找当前月份的文件,并显示第3列的最大值(max)。在下面的示例中,输出应为87
01/02/23 10:45 19 26
01/02/23 11:45 19 45
01/02/23 12:45 19 36
01/02/23 13:45 22 64
01/02/23 14:45 19 72
01/02/23 15:45 19 54
01/02/23 16:45 19 80
01/02/23 17:45 17 36
01/03/23 10:45 18 24
01/03/23 11:45 19 26
01/03/23 12:45 19 48
01/03/23 13:45 20 87
01/03/23 14:45 20 29
01/03/23 15:45 18 26
3条答案
按热度按时间5vf7fwbs1#
因为你的文件名是可排序的,你可以很容易地把当月的文件作为可排序序列中的最后一个,然后快速的awk返回结果。
或者,您可以让awk对文件名执行繁重的操作
或者如果你不喜欢全局扩展的技巧
j8yoct9x2#
我将按照以下方式利用GNU
AWK
完成此任务,让transc-2301.log
内容那么
给出输出(截至2023年1月18日)
警告:我假设您的文件使用两个或更多的空白字符作为分隔符,如果这不成立,相应地调整
FS
。警告:将m
设置为低于感兴趣列中可能出现的最低值的值。我使用strftime
函数检测应处理的文件,并RAM所有transc*.log
文件,但仅对选定文件采取操作,操作为:如果m
高于当前m
,则将m
设置为$3
,否则保持m
值。处理文件后,在END
中,Im
的print
值。hgqdbh6s3#