Hi,
Jason Sweat said:
I see that
ruby -pe '$_.gsub!(/^(\d+)/, Time.at($1.to_i).to_s)' /var/log/squid/access.log
works as well.
$1 becomes a result of the match last time, beause $1 is
evaluated before gsub! is called.
% ruby -e '1111111111.upto(1111111115){|i| puts i}' |\
ruby -pe '$_.gsub!(/^(\d+)/, Time.at($1.to_i).to_s)'
Thu Jan 01 09:00:00 JST 1970
Fri Mar 18 10:58:31 JST 2005
Fri Mar 18 10:58:32 JST 2005
Fri Mar 18 10:58:33 JST 2005
Fri Mar 18 10:58:34 JST 2005
So you should use a block.
% ruby -e '1111111111.upto(1111111115){|i| puts i}' |\
ruby -pe '$_.gsub!(/^(\d+)/){Time.at($1.to_i).to_s}'
Fri Mar 18 10:58:31 JST 2005
Fri Mar 18 10:58:32 JST 2005
Fri Mar 18 10:58:33 JST 2005
Fri Mar 18 10:58:34 JST 2005
Fri Mar 18 10:58:35 JST 2005
Golf:
% echo 1111111111 |ruby -pe 'sub(/^\d+/){Time.at($&.to_i)}'
Fri Mar 18 10:58:31 JST 2005