awk将时间转换为毫秒:
#!/bin/bash
if [ $# -lt 1 ]; then
echo "usage: $0 filename"
exit 1
fi
grep ":" ca_server.log | \
sed 's/\t/ /g' | \
awk -F' ' 'BEGIN{OFS=",";} {print $1,$3,$6}' | \
awk -F'[.:]' 'BEGIN{OFS=",";} {tm=(((($1*60)+$2)*60+$3)*1000)+$4; print $0,tm}' | \
awk -F',' 'BEGIN{OFS=",";} {print $2,$1,$4,$3}' \
> $1"_cleanup.csv"
转换前:
当前时间 当前时间 交易所时间 最新价 成交量 成交额
--------------------------------------------------------------------------------------------------------------
14:55:16.383 1534834516383 14:33:59 2733705 99946752 1.07688666E9
14:55:19.248 1534834519248 14:34:03 2733204 99980216 1.07720102E9
14:55:24.267 1534834524267 14:34:09 2733219 100008984 1.07751782E9
14:55:29.264 1534834529264 14:34:14 2733635 100033904 1.07786611E9
14:55:34.259 1534834534259 14:34:18 2733168 100059296 1.07813491E9
14:55:39.265 1534834539265 14:34:24 2733232 100089992 1.07847693E9
转换后:
14:33:59,14:55:16.383,53716383,1.07688666E9
14:34:03,14:55:19.248,53719248,1.07720102E9
14:34:09,14:55:24.267,53724267,1.07751782E9
14:34:14,14:55:29.264,53729264,1.07786611E9
14:34:18,14:55:34.259,53734259,1.07813491E9
14:34:24,14:55:39.265,53739265,1.07847693E9
awk将Linux秒数转换为时间:
awk -F'.' '{print int($1%(3600*24)/3600)":"int($1%3600/60)":"$1%60"."$2}' myfile.txt