BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


如何用Shell来实现以下的操作?
首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
kentII
新手




UID:40462
注册:2003-1-20
最后登录: 2008-08-07
帖子:12
精华:0

可用积分:34 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-8-6 16:21 
想把Apache已经生成的access.log文件中的[01/Aug/2008:14:06:30 +0800] 部分,转换成UTC时间的形式,然后输出为一个新的日志文件,如何用Shell实现,请高手指点。



一下是access.log中记录的一个例子:
192.168.10.174 - - [01/Aug/2008:14:06:30 +0800] "GET / HTTP/1.1" 302 659 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:31 +0800] "GET /index.jsp HTTP/1.1" 200 16533 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /ShowImageServlet?id=1&lang=ja&bean=SolutionBean HTTP/1.1" 200 5083 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /ShowImageServlet?id=2&lang=ja&bean=SolutionBean HTTP/1.1" 200 5148 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /images/favicon.ico HTTP/1.1" 200 5 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /images/w3c_xhtml1.0.gif HTTP/1.1" 200 2333 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /images/zh/title.gif HTTP/1.1" 200 6606 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /include/MatrixOne.swf HTTP/1.1" 200 4073 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /script/Select.htc HTTP/1.1" 200 13800 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /script/Select.htc HTTP/1.1" 200 13800 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /script/check.js HTTP/1.1" 200 3619 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /script/initMenu.js HTTP/1.1" 200 17565 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /script/ja/souceXML.xml HTTP/1.1" 200 2604 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /script/styleSwitch.js HTTP/1.1" 200 1660 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /style/gray%20window/bgImg.gif HTTP/1.1" 200 97 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
192.168.10.174 - - [01/Aug/2008:14:06:32 +0800] "GET /style/gray%20window/bottom_bg.jpg HTTP/1.1" 200 4657 "http://192.168.10.253/index.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

爱一个人需要理由吗?
不需要吗?
需要吗?
不需要吗?
真是的…只是讨论一下,何必这么认真呢。。。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
d38179677
骑士




UID:732629
注册:2008-7-21
最后登录: 2008-10-13
帖子:56
精华:0

可用积分:103 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...在线...

[个人空间] [短信] [博客]


2楼 发表于 2008-8-6 16:37 
等待高手解答。。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
ly5066113   帅哥 (Tim)
精灵使


CU奥运火炬传递手2008
UID:465018
注册:2006-9-13
最后登录: 2008-10-13
帖子:3273
精华:0

可用积分:3610 (小富即安)
信誉积分:120
专家积分:272 (本版:221)
空间积分:0
推广积分:55

来自:长春
状态:...在线...

[个人空间] [短信] [博客]


3楼 发表于 2008-8-6 16:50 


QUOTE:
原帖由 kentII 于 2008-8-6 16:21 发表
想把Apache已经生成的access.log文件中的[01/Aug/2008:14:06:30 +0800] 部分,转换成UTC时间的形式,然后输出为一个新的日志文件,如何用Shell实现,请高手指点。


一下是access.log中记录的一个例子:
1 ...

UTC时间的形式,这个是个什么形式?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
d38179677
骑士




UID:732629
注册:2008-7-21
最后登录: 2008-10-13
帖子:56
精华:0

可用积分:103 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...在线...

[个人空间] [短信] [博客]


4楼 发表于 2008-8-6 16:52 
date -u



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
寂寞烈火   帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
UID:187152
注册:2004-10-1
最后登录: 2008-10-13
帖子:24080
精华:5

可用积分:13325 (大富大贵)
信誉积分:110
专家积分:161 (本版:97)
空间积分:1425
推广积分:0

来自:北京海淀
状态:...在线...

[个人空间] [短信] [博客]


5楼 发表于 2008-8-6 16:59 
把01/Aug/2008:14:06:30 +0800变成秒?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


Window$ XP Professional service pack 2
CYGWIN_NT-5.1 + GNU bash version 3.2.39

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
kentII
新手




UID:40462
注册:2003-1-20
最后登录: 2008-08-07
帖子:12
精华:0

可用积分:34 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2008-8-6 17:25 
回复 #3 ly5066113 的帖子

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。

例如我的例子中的[01/Aug/2008:14:06:30 +0800]是本地时间(即北京时间)
UTC + 时区差 = 本地时间

时区差东为正,西为负。在此,把东八区时区差记为 +0800,

UTC + (+0800) = 本地(北京)时间 (1)

那么,UTC = 本地时间(北京时间))- 0800 (2)

14:06:30 - 08:00:00 = 06:06:30 这个就是UTC时间,不过有的时候会得到前一天的时间
这个也是个问题。。。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

爱一个人需要理由吗?
不需要吗?
需要吗?
不需要吗?
真是的…只是讨论一下,何必这么认真呢。。。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
blackold   帅哥 (黑哥)
大天使



UID:631768
注册:2007-10-22
最后登录: 2008-10-13
帖子:2063
精华:0

可用积分:4291 (小富即安)
信誉积分:0
专家积分:91 (本版:91)
空间积分:0
推广积分:0

状态:...在线...

[个人空间] [短信] [博客]


7楼 发表于 2008-8-6 17:29 
回复 #1 kentII 的帖子

try:

$ awk 'BEGIN { FS="[][]"; OFS="" } {gsub(/\//,"-",$2);sub(/:/," ",$2); "date -ud \""$2"\""|getline a;$2="["a"]";print }' access.log

或者用gsed s/...//e



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
kentII
新手




UID:40462
注册:2003-1-20
最后登录: 2008-08-07
帖子:12
精华:0

可用积分:34 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2008-8-6 17:45 
回复 #7 blackold 的帖子

/bin/sh: -c: line 1: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 2: syntax error: unexpected end of file
出现语法错误



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

爱一个人需要理由吗?
不需要吗?
需要吗?
不需要吗?
真是的…只是讨论一下,何必这么认真呢。。。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
ly5066113   帅哥 (Tim)
精灵使


CU奥运火炬传递手2008
UID:465018
注册:2006-9-13
最后登录: 2008-10-13
帖子:3273
精华:0

可用积分:3610 (小富即安)
信誉积分:120
专家积分:272 (本版:221)
空间积分:0
推广积分:55

来自:长春
状态:...在线...

[个人空间] [短信] [博客]


9楼 发表于 2008-8-6 17:45 


QUOTE:
原帖由 blackold 于 2008-8-6 17:29 发表
try:
$ awk 'BEGIN { FS="[][]"; OFS="" } {gsub(/\//,"-",$2);sub(/:/," ",$2); "date -ud \""$2"\""|getline a;$2="["a"]";print }' access.log

或者用gsed s/...//e

学习了。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
blackold   帅哥 (黑哥)
大天使



UID:631768
注册:2007-10-22
最后登录: 2008-10-13
帖子:2063
精华:0

可用积分:4291 (小富即安)
信誉积分:0
专家积分:91 (本版:91)
空间积分:0
推广积分:0

状态:...在线...

[个人空间] [短信] [博客]


10楼 发表于 2008-8-6 17:48 
回复 #8 kentII 的帖子

我环境没有问题.

试试这个:

$ sed 'h;s/\(\[[^:]*\):\([^]]*\]\)/\1 \2/g;//s/\//-/g;s/.*\[\([^]]*\)\].*/date -ud "\1"/e;G;s/\(.*\)\n\(.*\[\)[^]]*\(\].*\)/\2\1\3/' access.log

假设每行只有一个[date]

[ 本帖最后由 blackold 于 2008-8-6 17:57 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » 论坛 » Shell »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.077984 second(s), 4 queries , Gzip enabled