log file conversion (OT?)

Bart Silverstrim bsilverstrim at athensasd.org
Wed Nov 9 18:43:54 GMT 2005


On Nov 9, 2005, at 1:03 PM, Giorgos Keramidas wrote:

> On 2005-11-09 12:36, Bart Silverstrim <bsilverstrim at athensasd.org> 
> wrote:
>> I have Squid running on a FreeBSD system and the log file (access.log)
>> has lines like
>>
>> 1131556815.537    101 172.16.2.153 TCP_HIT/200 35674 GET
>> http://www.urprize2.com/adv77/images/header_08_23_05.gif - NONE/-
>> image/gif
>> 1131556815.584     47 172.16.2.153 TCP_HIT/200 1828 GET
>> http://www.urprize2.com/adv77/images/timer.swf - NONE/-
>> application/x-shockwave-flash
>>
>> in it.  Is there a simple way or a one- or two-liner script
>> that can take the epoch time in the first column and replace it
>> with the actual time/date stamp in human-readable format?
>
> Yes.  Perl should work fine here.
>
>     $ echo '1131556815.537    101 172.16.2.153 TCP_HIT/200 35674 GET' 
> | \
>       perl -MPOSIX=strftime \
>       -pe 'chomp; @x=split /\./; \
>            $ts = strftime "%Y-%m-%d %H:%M:%S", (localtime($x[0])); \
>            $_=$ts.".".join(".", at x[1,$#x])."\n";'
>     2005-11-09 09:20:15.537    101 172.153 TCP_HIT/200 35674 GET

Is there a way to get it to take in each line of the logfile and output 
it to a new file?  It wouldn't be as easy as a "cat access.log | (perl 
code here) >> newfile.log" would it?



More information about the freebsd-questions mailing list