概要
在文件数据处理中,awk是常用的unix工具命令。如果需要将unix时间戳(1687057855)转换成标准时间格式(06/18/23 13:07:28),可以使用其自带的strftime函数。
awk命令
awk -F',' '{printf("%s",strftime(%T,$1))}' xxx.log // xxx.log是csv文件, 同时假设第一列是unix时间戳
对于打印日期格式的说明符
%Y | 带世纪的年份(如2018) |
%m | 用十进制表示的月数( 如09) |
%d | 用十进制表示的月份中的某一天( 如20) |
%H | 用十进制表示的24 小时制的小时数以( 如20) |
%M | 用十进制表示的分钟数( 如15) |
%S | 用十进制表示的秒数(如15) |
注:上面只是最常用的格式符,还有类似%T=%H:%M:%S,详细可查阅其他资料
对于小数部分的处理
awk没有处理小数的打印格式,需要通过其它方式处理
awk -F',' '{printf("%s.%03d",strftime(%T,$1),$1*1000/%1000)}' xxx.log // %03d表示保留三位数字,若不满3位前面补零
节选打印
有时处理的数据量太大,需要节选打印部分行,这时可以通过NR(文件行数)来辅助处理
awk -F',' 'NR%10==0{printf("%s.%03d",strftime(%T,$1),$1*1000/%1000)}' xxx.log // 每十行转换打印一行