【发布时间】:2016-05-22 19:42:05
【问题描述】:
我有一个文件(通常是这样),其中 *nix 时间中的日期是从纪元开始的秒数,然后是一条消息和一个我想要选择的最终“线程”字段。全部用“|”分隔从 sqlite DB 导出...
例如
1306003700|SENT|21
1277237887|SENT|119
1274345263|SENT|115
1261168663|RECV|21
1306832459|SENT|80
1306835346|RECV|80
基本上,我可以很容易地使用 sed 来选择和打印与“线程”字段匹配的行,并使用消息打印相应的时间,因此:
> cat file | sed -n "s/^\([0-9]*\)\|\(.*\)\|80$/\1 : \2/p"
1306832459 : SENT
1306835346 : RECV
但我真正想做的也是通过unix date命令传递时间字段,所以:
> cat file | sed -n "s/^\([0-9]*\)\|\(.*\)\|80$/`date -r \1` : \2/p"
但这似乎不起作用 - 即使它似乎接受它。它只是打印出相同的(纪元开始)日期:
Thu 1 Jan 1970 01:00:01 BST : SENT
Thu 1 Jan 1970 01:00:01 BST : RECV
我如何/可以评估/插入对日期命令的反向引用 \1?
也许 sed 不是匹配这些行的方法(并一次性格式化输出)...
【问题讨论】: