I've been trying to keep up with reading the IRC logs, but they aren't the easiest to read. So.... I turned to scripting and created a much easier to read format based on the original text. The new format separates the text by subject, tallies the attendees and reports on these at the end. The script (called "irc") is in Ruby and is attached - it writes out a file "irc.{mo}.{day}". -- UNIX System Administrator Linux+, SCSA, RHCE, LPIC-1 HP-UX, Linux, Solaris, FreeBSD Books: "Advanced System Administration" and "GNU Screen: A Comprehensive Introduction" http://www.lulu.com/ssrat
#!/usr/bin/ruby message = STDIN.readlines.map { |x| x.gsub!(/=\n$/,'') x.gsub!(/=20/, ' ') x.gsub!(/=3D/, '=') x } x = `date "+irc.%m.%d"` $stdout = File.open(x.chomp, "w+") x = `date`.chomp print x attendees = Hash.new joined = Hash.new message.to_s.each { |x| next unless (x =~ /^\[[0-9][0-9]:[0-9][0-9]\]/) x.gsub!(/^\[..:..\] \* /, " * ") if (/subject to (.*)/.match(x)) s = "SUBJECT: #{$1}" print "\n\n#{s}\n#{"=" * s.size}\n\n" elsif (/^\[..:..\] ([^ ]*) has joined /.match(x)) joined[$1] = 1 print x.gsub(/...:... /, " ") elsif (/^\[..:..\] ([^: ]*) /.match(x)) print x.gsub(/...:... /, " ") else print x # print x.gsub(/^...:... /, " ") end if (/^\[..:..\] ([^ :]*): /.match(x)) attendees[$1] = 1 end } total = (attendees.keys + joined.keys).sort.uniq print "\n\nAttendees (#{total.size}): \n" total.each { |x| print "\t", x if (joined.member?(x) && ! attendees.member?(x)) print " (nonspeaking)" end print "\n" } #message.each { |line| # line.chomp! # if (line =~ /=$/) # line.chop! # line += readline.chomp! # end # # if (line =~ /set the subject to (.*)/) # subj = $1; # print "\n", subj, "\n\n"; # else # print line, "\n"; # end #}