Ruby CSV登录计数器脚本

Ruby CSV登录计数器脚本,ruby,csv,rubygems,Ruby,Csv,Rubygems,我正在寻找一个ruby脚本,它将使用类似于last的东西来计算每个用户的登录频率,并将其输出到csv文件,这样我就可以制作一个包含最频繁登录的条形图 我希望它像这样保存CSV输出: user2,19 user6,20 user3,18 user3 :1001 192.1.20.17 Sun Nov 30 15:01 still logged in user8 :1000 192.1.20.15 Sun Nov 30 10:00 - 11:

我正在寻找一个ruby脚本,它将使用类似于
last
的东西来计算每个用户的登录频率,并将其输出到csv文件,这样我就可以制作一个包含最频繁登录的条形图

我希望它像这样保存CSV输出:

user2,19
user6,20
user3,18 
user3     :1001        192.1.20.17   Sun Nov 30 15:01   still logged in
user8    :1000        192.1.20.15   Sun Nov 30 10:00 - 11:52  (01:52)    
user2     tty7         :0               Tue Nov 25 19:43 - 21:09  (01:25)    
user0   tty7         :0               Tue Nov 25 16:46 - 18:06  (01:19) 
通常最后一个看起来像这样:

user2,19
user6,20
user3,18 
user3     :1001        192.1.20.17   Sun Nov 30 15:01   still logged in
user8    :1000        192.1.20.15   Sun Nov 30 10:00 - 11:52  (01:52)    
user2     tty7         :0               Tue Nov 25 19:43 - 21:09  (01:25)    
user0   tty7         :0               Tue Nov 25 16:46 - 18:06  (01:19) 
有什么东西已经做到了吗,或者我该怎么做呢?

也许是这样:

file = `last`
hash = {}
file.each_line { |x| hash[x.split("     ")[0].split("    ")[0]] = 0 unless hash[x.split("     ")[0].split("    ")[0]]; hash[x.split("     ")[0].split("    ")[0]] += 1 }
output = ""
hash.each_pair { |key, value| output += "#{key},#{value}\n" }
File.open('last.csv', 'w') {|f| f.write(output) }
您应该检查拆分中“”的内容是否正确。
此外,您还应该检查上一个命令的确切输出—在写入文件之前,您可能需要清除一些垃圾;)

到目前为止你试过什么?对于csv部分,在上搜索“csv”。你会得到一连串的结果。