awk 时间格式化求教

想用awk格式化history。原始数据是

: 1630678189:0;hist  
: 1630678550:0;histall  
: 1630678984:0;hist

使用awk格式化后awk -F'[;]' '{ $1=strftime("%Y-%m-%d %T" ,$1) " |"; print }' 输出是

1969-12-31 19:00:00 | hist
1969-12-31 19:00:00 | histall
1969-12-31 19:00:00 | hist

时间全都不对,求教这是哪里出了问题?

记得把前面的 : 给去掉啊…

echo ': 1630678189:0;hist' | awk -F'[;]' '{ $1=strftime("%Y-%m-%d %T" ,substr($1,2)) " |"; print }'
# 2021-09-03 22:09:49 | hist
1 个赞

这个记录时间的功能应该是 zsh 独有的

哈哈哈哈,昨天还想着把:去掉。脑子一蒙就钻了牛角尖了。非常感谢

已经很多年了, 每次我在要用的时候学到一点 awk 过一阵子又还给"老师"了…
所以我最后决定还是用脚本语言 node.js (正则表达式我挺在行的) 或者 Common Lisp 来解决…
如果是常用的就写成个小脚本…(还有 sed 我记不住参数 我大脑记忆力差)

大家觉得我这荒谬不? 还是如果懂正则表达式就基本够用了?