Linux时间戳转换成易读格式的方法

linux,时间,转换成,易读,格式,方法 · 浏览次数 : 250

小编点评

**步骤一:提取时间戳数值** ```awk '{print $1}' zhaobsh2.log |awk '{print $1}' ``` **步骤二:进行时间戳格式转换** ```awk '{y=$(date +\"%Y-%m-%d %H:%M %S.%N\" -d@$i); print $y}' zhaobsh2.log ``` **步骤三:进行原生替换** ```awk '{s/${i}/${y}/g; print $0}' zhaobsh2.log ``` **性能测试** 将原始文件“zhaobsh2.log”和转换后的文件“zhaobsh.log.test2”进行比较,发现转换后的文件速度约为原始文件的8%,说明该方法可用于对Redis monitor的输出进行性能优化。

正文

背景

最近一直在学习Redis相关的知识.
其中遇到了一个redis monitor的命令
但是这里有一个问题是: 
原生命令查询出来的时间是Unix时间戳格式的.
不太好发现查看与进行对照.
所以今天中午就进行了简单的学习,希望能够最简单的方式进行转换.

思路

认为awk命令一个就够了.
但是自己awk学医不精通.
所以尝试进行三步法进行处理
第一步取出时间戳的数值, 第二步进行转换, 第三步进行原生替换.
这样可能会有很大的性能损耗.

具体命令

for i in `cat zhaobsh2.log |awk '{print $1}'` ; 
do   y=$(date +"%Y-%m-%d %H:%M %S.%N" -d@$i) ;  sed -i "s/${i}/${y}/g" zhaobsh2.log ; 
done

验证一下性能

发现如果是百万级, 基本上不具备可操作性.
需要进行优化.

第二次处理

time( export IFS=$'\n' ; export j=1 ; for i in `awk '{cmd="date -d@"$1; cmd |getline; print}' zhaobsh.log.test2  `  ;
 do  echo -n $i &&  sed -n ${j}p zhaobsh.log.test2  &&  j=`expr $j + 1`  ; 
 done > zhaobsh.log.test22)

time (for i in `cat zhaobsh.log.test |awk '{print $1}'` ; 
do   y=$(date +"%Y-%m-%d %H:%M %S.%N" -d@$i) ;  sed -i "s/${i}/${y}/g" zhaobsh.log.test ; 
done)

好像 五百条数据库都是 8秒钟左右
百万级的 好像都没有准确进行处理..
文本处理的确比较麻烦. 

与Linux时间戳转换成易读格式的方法相似的内容:

Linux时间戳转换成易读格式的方法

背景 最近一直在学习Redis相关的知识. 其中遇到了一个redis monitor的命令 但是这里有一个问题是: 原生命令查询出来的时间是Unix时间戳格式的. 不太好发现查看与进行对照. 所以今天中午就进行了简单的学习,希望能够最简单的方式进行转换. 思路 认为awk命令一个就够了. 但是自己a

[转帖]linux时间戳转换成时间指令_时间戳转换公式

原文地址:http://wanping.blogbus.com/logs/28663569.html 1、时间戳转换为正常显示的时间格式 Freebsd 系统下: 转换命令为: date -r 1112173761 或者:date -r 1112173761 +”%Y-%m-%d %T %z”(年月

[转帖]Linux Shell:date日期时间操作

https://www.jianshu.com/p/cc9ebb212a8e 整理Linux Shell脚本中常用的日期操作,给予date命令,主要用法总结 获得当前日期,时间戳,date,date '+%s' 日期解析(字符串转日期,时间戳转日期)date -d 日期格式化输出,date '+%'

[转帖]linux中Shell日期转为时间戳的方法

http://www.nndssk.com/xtwt/169617hFPRvq.html shell中获取时间戳的方式为:date -d “$currentTime” +%s $ date -d @1337743485671 "+%c"Sun 28 May 44361 12:41:11 PM CST

[转帖]在 Linux 下 9 个有用的 touch 命令示例

https://linux.cn/article-9597-1.html touch 命令用于创建空文件,也可以更改 Unix 和 Linux 系统上现有文件时间戳。这里所说的更改时间戳意味着更新文件和目录的访问以及修改时间。 让我们来看看 touch 命令的语法和选项: 语法: # touch {

[转帖]挂载文件系统选项nodiratime、noatime

默认的方式下linux会把文件访问的时间atime做记录,文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间;这在绝大部分的场合都是没有必要的。 因为系统运行的时候要访问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将

Nginx map 实现时间格式转换

哈喽大家好,我是咸鱼 最近我们需要把 Nginx 的日志接入到自研的日志采集平台上,但是这个平台只支持 JSON 格式,所以需要把 Nginx 日志格式改成 JSON 格式 例如下面这样的效果 刚开始在主配置文件 nginx.conf 中定义了一个名叫 json 的日志格式字段 验证的时候其他内容没

[转帖]Linux小技巧:获取前一天日期、前一个月日期

最近脚本需要获取Linux前一天时间格式,用于设置日志文件名,网上查了查资料,这里记录一下。 1.date命令 1.1 date命令使用格式 date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--s

[转帖]《Linux性能优化实战》笔记(四)—— CPU 使用率

一、 节拍率与CPU时间 前一篇说到,Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jif

[转帖]《Linux性能优化实战》笔记(一)—— 平均负载

最近在看极客时间的《Linux性能优化实战》课程,记录下学习内容。 一、 平均负载(Load Average) 1. 概念 我们都知道uptime命令的最后三列分别是过去 1 分钟、5 分钟、15 分钟系统的平均负载,到底平均负载是什么? 简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中