我有一个perl脚本,我一直用它来解析wtmp文件,将所有用户的时间加在一起,并删除我们错误的数据。这个脚本在我最新/最新的系统上运行得非常好。但是,我有一个较旧的系统,一个运行Solaris 8的Sparc Ultra 3000我相信。这件事在我的屁股上比你知道的更痛苦。所以,我正试图让我的用户从中获取时间,并像这样格式化输出 -
bbarret8 316
cchang5 703
ccomanes 2267
ckeefe 24
cmeyer7 82
dbabbini 140
我正在使用的perl脚本是http://pastebin.com/ayN1yMJU
我的输入看起来像这样(还有更多条目) -
lwoods4 console :0 Mon Dec 30 14:08 - 14:22 (00:14)
dhesek console :0 Mon Dec 30 09:51 - 09:53 (00:01)
lwoods4 console :0 Sun Dec 29 15:06 - 15:16 (00:09)
dhesek console :0 Sun Dec 29 09:26 - 09:30 (00:04)
dhesek console :0 Fri Dec 27 16:15 - 16:17 (00:01)
ylin7 console :0 Fri Dec 27 15:24 - 16:04 (00:40)
lwoods4 console :0 Fri Dec 27 14:11 - 14:25 (00:13)
lwoods4 console :0 Fri Dec 27 11:18 - 11:35 (00:17)
dhesek console :0 Thu Dec 26 13:21 - 14:38 (01:16)
dhesek console :0 Wed Dec 25 14:20 - 14:23 (00:02)
sbrown3 console :0 Tue Dec 24 14:40 - 14:53 (00:12)
dhesek console :0 Tue Dec 24 09:21 - 09:25 (00:04)
sbrown3 console :0 Mon Dec 23 11:20 - 12:20 (00:59)
ylin7 console :0 Sun Dec 22 21:44 - 22:00 (00:16)
sbrown3 console :0 Sat Dec 21 15:05 - 16:18 (01:12)
kwatson2 console :0 Fri Dec 20 18:41 - 19:03 (00:22)
我的输出 -
# ./Varian.wtmp.last.pl
0 1
jvail1 19
kwatson2 22
mm 1
nmrext0 21
这是因为脚本在我当前系统上调用'last'命令来解析Solaris系统中的输出文件吗?它们看起来和我的眼睛是一样的,但也许它们不是。 非常感谢任何帮助!
答案 0 :(得分:1)
看到两个输出会很有帮助。检查现在是可选的+
匹配(解析天数时)。
use strict;
use warnings;
my %TIMES;
while (<DATA>) {
if (my($name,$days,$hours,$mins) = /^(\w+).+\((?:(\d+)\+?)?(\d+):(\d+)/) {
# '+' is optional __^
$TIMES{$name} += 1440 * $days + 60 * $hours + $mins;
}
}
foreach (sort keys %TIMES) {
print "$_ $TIMES{$_}\n";
}
__DATA__
lwoods4 console :0 Mon Dec 30 14:08 - 14:22 (00:14)
dhesek console :0 Mon Dec 30 09:51 - 09:53 (00:01)
lwoods4 console :0 Sun Dec 29 15:06 - 15:16 (00:09)
dhesek console :0 Sun Dec 29 09:26 - 09:30 (00:04)
dhesek console :0 Fri Dec 27 16:15 - 16:17 (00:01)
ylin7 console :0 Fri Dec 27 15:24 - 16:04 (00:40)
lwoods4 console :0 Fri Dec 27 14:11 - 14:25 (00:13)
lwoods4 console :0 Fri Dec 27 11:18 - 11:35 (00:17)
dhesek console :0 Thu Dec 26 13:21 - 14:38 (01:16)
dhesek console :0 Wed Dec 25 14:20 - 14:23 (00:02)
sbrown3 console :0 Tue Dec 24 14:40 - 14:53 (00:12)
dhesek console :0 Tue Dec 24 09:21 - 09:25 (00:04)
sbrown3 console :0 Mon Dec 23 11:20 - 12:20 (00:59)
ylin7 console :0 Sun Dec 22 21:44 - 22:00 (00:16)
sbrown3 console :0 Sat Dec 21 15:05 - 16:18 (01:12)
kwatson2 console :0 Fri Dec 20 18:41 - 19:03 (00:22)
输出
dhesek 88
kwatson2 22
lwoods4 53
sbrown3 143
ylin7 56