Chinaunix

标题: 一个文本替换问题 [打印本页]

作者: 真少少    时间: 2007-09-29 16:37
标题: 一个文本替换问题
我有一个文本如下格式
project_timestamp |              project_id              | project_name  | project_owner
-------------------+--------------------------------------+---------------+---------------
     1190698765370 | 7e7099df-8641-4160-b0cd-316886e1f229 | aaaa          | aa
     1190830056546 | a75a8a13-ef78-484f-85fc-aad5c1fe8a8a | aaaa          | aa
     1190903907296 | a0db9f34-4dcc-4413-843c-0e79cc21de39 | aaa           | aa
     1190869553824 | c349e417-5da7-4ba3-963f-d393c9e45a7a | ddddd         | aa
     1190952324759 | 61309c8c-b53e-474d-98e9-ee9fd059478f | bbb_fournodes | aa
     1191046592406 | b723059f-1c8b-4be9-9dde-3e90ff15eeba | sss           | aa


其中第一行的时间是使用JAVA计算出来的我使用SHELL计算的公式如下


awk '{print "date -d""\""" 19700101 "$1" seconds UTC" "\"" " +%Y%m%d\" \"%H%M%S"}' temp|sh


取得结果是这样的
20070925 133925
20070927 020736
20070927 223827
20070927 130553
20070928 120524
20070929 141632

那么我怎样才能把上边的时间进行替换呢?
作者: 寂寞烈火    时间: 2007-09-29 16:56
try
while read a b;do echo $(date "+%Y%m%d %T" -d"19700101 $a seconds UTC") $b ;done<urfile

[ 本帖最后由 寂寞烈火 于 2007-9-29 16:57 编辑 ]
作者: 小N哥哥    时间: 2007-09-29 17:21
呵呵,看了好久才明白是怎么回事!
作者: 真少少    时间: 2007-09-29 17:26
我的做法是把两内如输出倒 ccc bbb 中
然后
paste -d \| ccc bbb
解决问题
作者: springwind426    时间: 2007-09-29 18:08
while read a b
do
  echo $(date -u "+%Y%m%d %T" -d "-$(($(date -u +%s)-$a/1000))seconds") $b
done <文件

解释:

date -u +%s 是获取1970-1-1到现在的  秒数

你的那个时间大概是  毫秒  所以我把它除1000了

用这两个时间的差来计算日期

date -u "+%Y%m%d %T" 输出指定格式的  时间形式
-d "-???seconds" 表示日期是???秒之前的

[ 本帖最后由 springwind426 于 2007-9-29 18:11 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2