我有一个制表符分隔的日志文件,其前两列中的日期时间格式为"2011-07-20 11:34:52":
日志文件中的示例行是:
2011-07-20 11:34:15 LHR3 1488 111.111.111.111 GET djq2eo454b45f.cloudfront.net /1010.gif 200 - Mozilla/5.0%20(Windows%20NT%206.1;%20rv:5.0)%20Gecko/20100101%20Firefox/5.0 T=F&Event=SD&MID=67&AID=dc37bcff-70ec-419a-ad43-b92d6092c9a2&VID=8&ACID=36&ENV=demo-2&E=&P=Carousel&C=3&V=3
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用awk将日期时间转换为纪元:
cat logfile.log | grep 1010.gif | \
awk '{ print $1" "$2" UTC|"$5"|"$10"|"$11"|"$12 }' | \
awk 'BEGIN {FS="|"};{system ("date -d \""$1"\" +%s" ) | getline myvar}'
Run Code Online (Sandbox Code Playgroud)
所以这让我有了一些方法,因为它让我的时代少了三千个 - 但是我只是得到了系统命令的输出 - 我真的想用纪元时间替换1美元.
我的目标是以下输出:
<epoch time>|$5|$10|$11|$12
Run Code Online (Sandbox Code Playgroud)
我尝试过只使用:
cat logfile.log | grep 1010.gif | awk '{ print d };' "d=$(date +%s -d"$1")"
Run Code Online (Sandbox Code Playgroud)
但这只是给我空行.
有什么想法吗.
谢谢
这假定gawk - 不能做任何时区翻译,严格的当地时间.
... | gawk '
BEGIN {OFS = "|"}
{
split($1, d, "-")
split($2, t, ":")
epoch = mktime(d[1] " " d[2] " " d[3] " " t[1] " " t[2] " " t[3])
print epoch, $5, $10, $11, $12
}
'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5077 次 |
最近记录: |