请教:一个字段处理的问题

wuerhe
请教:一个字段处理的问题

某个文件a.txt内容格式如下:

11,0,1214895985,23456,1214895942
22,0,1214895775,23456,1214895832
.....
.....

在上述文件的第三个和第五个字段是1970-1-1 0点以来的秒数
我现在希望通过shell脚本把a.txt上述两个字段的秒数变为日期时间值,请问如何操作?

blackold
回复 #1 wuerhe 的帖子

不知道你想要什么时间格式:
[code]$ awk 'BEGIN { FS =OFS = ","}{$3=strftime("%Y%m%d",$3);$5=strftime("%Y%m%d",$5);print}' urfile[/code]

sywolf
awk -F"," '{print $1,$2,strftime("%Y%m%d%H%M%S",$3),$4,strftime("%Y%m%d%H%M%S",$5)}' filename

chenwenming
回复 #1 wuerhe 的帖子

在黑哥写的上面加个小时:分钟:秒
awk 'BEGIN { FS =OFS = ","}{$3=strftime("%Y%m%d %H:%M:%S",$3);$5=strftime("%Y%m%d %H:%M:%S",$5);print}'   urfile

blackold
回复 #1 wuerhe 的帖子

非gawk:
[code]$ awk 'BEGIN { FS=OFS= ","}{ "date -d @"$3" +%Y%m%d"|getline $3;"date -d @"$5" +%Y%m%d"|getline $5;print}' urfile[/code]

寂寞烈火
gnu/linux的date提供这功能, 不嫌麻烦这样试一试
ifs=$IFS
IFS=,
while read line;do set -- $line;echo $1,$2,$(date -d"1970-01-01 00:00:00 $3 sec" +"%F %T"),$4,$(date -d"1970-01-01 00:00:00 $5 sec" +"%F %T");done<ur-file
IFS=$ifs

blackold
回复 #6 寂寞烈火 的帖子

学习了,这些还没学过。烈火,好像还可以简化成这样: date -d @epochTime +Format

寂寞烈火
[quote]原帖由 [i]blackold[/i] 于 2008-7-1 18:28 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8713469&ptid=1185907][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
学习了,这些还没学过。烈火,好像还可以简化成这样: date -d @epochTime +Format [/quote]
好像? 成就是成不成就是不成, 计算机不认识"好像"吧~~ ^_^

无声无息
回复 #8 寂寞烈火 的帖子

在讲谚语?