[20190502]给显示输出加入时间戳.txt

--//有别人问我执行脚本中timestamp.pl的代码,实际上有些文章里面有源代码,有一些忘记写上了。
--//贴上:
$ cat /usr/local/bin/timestamp.pl
#!/usr/bin/perl
while (<>) {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
printf("%02d:%02d:%02d", $hour, $min, $sec);
print  ": $_";
#print localtime() . ": $_";
}

--//使用timestamp.pl在开始标注时间.这样更加清晰.我好像改过,实际上这个很容易自己写一个。

$ cat ts.sh
#! /bin/bash
while read i
do
    echo $(date '+%H:%M:%S') : $i
done

--//这是我临时想到的脚本,看了链接:https://serverfault.com/questions/310098/how-to-add-a-timestamp-to-bash-script-log
--//真心佩服老外,人家还考虑执行效率.
gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'
while true; do printf '%(%F %T)T\n'; done

--//顺便在我的笔记本上测试看看.我使用Cygwin64 Terminal for windows:
$  yes | gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }' | uniq -c
 180224 [2019-05-03 20:23:53] y
 433126 [2019-05-03 20:23:54] y
 430354 [2019-05-03 20:23:55] y
 430532 [2019-05-03 20:23:56] y
 428690 [2019-05-03 20:23:57] y
 432775 [2019-05-03 20:23:58] y

$ yes |while read i; do printf '%(%F %T)T';echo " $i" ; done | uniq -c
   1406 2019-05-03 20:29:13 y
  12101 2019-05-03 20:29:14 y
  12080 2019-05-03 20:29:15 y
  12111 2019-05-03 20:29:16 y
  12048 2019-05-03 20:29:17 y
  12373 2019-05-03 20:29:18 y
  12350 2019-05-03 20:29:19 y

$ yes |while read i; do echo $(date '+%H:%M:%S') " $i"; done | uniq -c
      6 20:32:29  y
     33 20:32:30  y
     31 20:32:31  y
     30 20:32:32  y
     31 20:32:33  y
     33 20:32:34  y
     33 20:32:35  y
     33 20:32:36  y

$ yes | xargs -I{} date "+%H:%M:%S : {}" | uniq -c
     31 20:45:22 : y
     31 20:45:23 : y
     35 20:45:24 : y
     34 20:45:25 : y
     35 20:45:26 : y
     35 20:45:27 : y
     34 20:45:28 : y

--//实际上还有1个现成的ts命令(我没有找到,不知道在那个rpm包里面)以及perl脚本的情况.上班测试看看.

$ yes | timestamp.pl | uniq -c
 267209 08:56:02: y
 308591 08:56:03: y
 308820 08:56:04: y
 308579 08:56:05: y
 308996 08:56:06: y
 282290 08:56:07: y
 304223 08:56:08: y

$ yes | gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }' | uniq -c
 190537 [2019-05-05 08:56:58] y
 516917 [2019-05-05 08:56:59] y
 518052 [2019-05-05 08:57:00] y
 517918 [2019-05-05 08:57:01] y
 518543 [2019-05-05 08:57:02] y
 517913 [2019-05-05 08:57:03] y

--//$ yes |while read i; do printf '%(%F %T)T';echo " $i" ; done | uniq -c在我的linux 5.9不支持.在rhel7 测试,显示的时间是:
1970-01-01 08:00:00 y
1970-01-01 08:00:00 y
--//有问题.

$ yes |while read i; do echo $(date '+%H:%M:%S') " $i"; done | uniq -c
    210 09:00:26  y
    435 09:00:27  y
    433 09:00:28  y
    438 09:00:29  y
    439 09:00:30  y

$ yes | xargs -I{} date "+%H:%M:%S : {}" | uniq -c
    223 09:00:49 : y
    803 09:00:50 : y
    803 09:00:51 : y
    798 09:00:52 : y
   1018 09:00:53 : y
    814 09:00:54 : y
    812 09:00:55 : y

--//google还找到如下链接:
https://unix.stackexchange.com/questions/26728/prepending-a-timestamp-to-each-line-of-output-from-a-command

Firstly, if you are expecting these timestamps to actually represent an event, bear in mind that since many programs
perform line buffering (some more aggressively than others), it is important to think of this as close to the time that
the original line would have been printed rather than a timestamp of an action taking place.

You may also want to check that your command doesn't already have an inbuilt feature dedicated to doing this. As an
example, ping -D exists in some ping versions, and prints the time since the Unix epoch before each line. If your
command does not contain its own method, however, there are a few methods and tools that can be employed, amongst
others:

POSIX shell

Bear in mind that since many shells store their strings internally as cstrings, if the input contains the null character
(\0), it may cause the line to end prematurely.

command | while IFS= read -r line; do printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done

GNU awk

command | gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'

Perl

command | perl -pe 'use POSIX strftime; print strftime "[%Y-%m-%d %H:%M:%S] ", localtime'

Python

command | python -c 'import sys,time;sys.stdout.write("".join(( " ".join((time.strftime("[%Y-%m-%d %H:%M:%S]", time.localtime()), line)) for line in sys.stdin )))'

Ruby

command | ruby -pe 'print Time.now.strftime("[%Y-%m-%d %H:%M:%S] ")'

--//Python,ruby(没安装)没有测试,其它测试如下:

$ yes | perl -pe 'use POSIX strftime; print strftime "[%Y-%m-%d %H:%M:%S] ", localtime'| uniq -c
  10259 [2019-05-05 09:02:30] y
 140363 [2019-05-05 09:02:31] y
 144397 [2019-05-05 09:02:32] y
 144285 [2019-05-05 09:02:33] y
 131107 [2019-05-05 09:02:34] y

$ yes | while IFS= read -r line; do printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done|uniq -c
     50 [2019-05-05 09:04:09] y
    410 [2019-05-05 09:04:10] y
    400 [2019-05-05 09:04:11] y
    400 [2019-05-05 09:04:12] y

--//从测试看awk脚本效率最高,使用这个脚本主要目的看某些步骤的执行时间间隔.例子:

$ ping -c 3 -i 2 192.168.100.40 | ts.awk
[2019-05-05 09:08:36] PING 192.168.100.40 (192.168.100.40) 56(84) bytes of data.
[2019-05-05 09:08:36] 64 bytes from 192.168.100.40: icmp_seq=1 ttl=64 time=0.855 ms
[2019-05-05 09:08:38] 64 bytes from 192.168.100.40: icmp_seq=2 ttl=64 time=0.094 ms
[2019-05-05 09:08:40] 64 bytes from 192.168.100.40: icmp_seq=3 ttl=64 time=0.165 ms
[2019-05-05 09:08:40]
[2019-05-05 09:08:40] --- 192.168.100.40 ping statistics ---
[2019-05-05 09:08:40] 3 packets transmitted, 3 received, 0% packet loss, time 4000ms
[2019-05-05 09:08:40] rtt min/avg/max/mdev = 0.094/0.371/0.855/0.343 ms

--//顺便问一下,那位知道ts这个命令在那个rpm安装包里面.那位知道?遇到这样的情况如何查询确定安装包.

[20190502]给显示输出加入时间戳.txt的更多相关文章

  1. 把cmd信息中的正常和异常输出分别输出到不同txt文件中

    场景一: 1.大量滚动信息容纳不下,在小黑屏中被冲刷掉. 2.希望把正常输出和异常输出分别输出到不同地方. 相关命令 一共有4个输出到文件的命令,现以jar命令打war包举例说明: 命令 说明 举例  ...

  2. 【matlab】将matlab中数据输出保存为txt或dat格式

    将matlab中数据输出保存为txt或dat格式 总结网上各大论坛,主要有三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt ...

  3. Linux 命令 - watch: 反复执行命令,全屏显示输出

    watch 命令周期性地执行命令,全屏显示输出.可以通过 watch 命令反复执行某一程序来监视它的输出变化. 命令格式 watch [-dhvt] [-n <seconds>] [--d ...

  4. YUV422蓝屏显示输出功能辅助调试

    YUV422蓝屏显示输出功能辅助调试 YUV422有YUYV,YVYU,UYVY,VYUY四种,以下笔者就就以UYVY为例介绍一下数据构成.因为常常要跟视频输入打交道,所以YUV422这种常见的视频信 ...

  5. MATLAB 显示输出数据的三种方式

    MATLAB 显示输出数据的三种方式 ,转载 https://blog.csdn.net/qq_35318838/article/details/78780412 1.改变数据格式 当数据重复再命令行 ...

  6. [20171220]toad plsql显示整形的bug.txt

    [20171220]toad plsql显示整形的bug.txt --//下午有itpub网友反应,一个查询在sqlplus,pl/sql下不同.链接如下:--//http://www.itpub.n ...

  7. 【Linux开发】将cmd中命令输出保存为TXT文本文件

    将cmd中命令输出保存为TXT文本文件 在网上看到一篇名为:"[转载]如何将cmd中命令输出保存为TXT文本文件" 例如:将Ping命令的加长包输出到D盘的ping.txt文本文件 ...

  8. 查找默认安装的python路径,并输出到 FindPythonPathX_output.txt

    在python程序设计教学中,在汉化IDEL时.为PyCharm项目设置解释器时,经常需要查找python安装路径.对老手来说很简单,但对很多刚开始学习编程的学生来说,则很困难.所以,编写了一个批处理 ...

  9. 【Linux】将终端的命令输出保存为txt文本文件

    Linux中的终端很方便,可以直接复制粘贴的. 之后开一个gedit文本编辑器,把复制到的内容粘贴就可以的. 不像windows的cmd控制台,需要先右键标题栏,选择编辑->全选/标记,在右键标 ...

随机推荐

  1. Vue工程化入口文件main.js中Vue.config.productionTip = false含义

    阻止启动生产消息,常用作指令.通俗理解为消息提示的环境配置. 阻止启动生产消息 這又是什麽意思? 看下效果 (1)Vue.config.productionTip = false (2)Vue.con ...

  2. vue组件name的作用小结

    我们在写vue项目的时候会遇到给组件命名 这里的name非必选项,看起来好像没啥用处,但是实际上这里用处还挺多的 ? 1 2 3 export default {    name:'xxx' } 1. ...

  3. 【西北师大-2108Java】第四次作业成绩汇总

    [西北师大-2108Java]第四次作业成绩汇总 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第2个特征:继承.多态: 学会采用继承定义类设计程 ...

  4. <Tree> 298 250 366 199(高频) 98(高频)

    298. Binary Tree Longest Consecutive Sequence 先序遍历,根左右.如果该节点的 value == 父节点value + 1, 则长度+1; 否则重置为1. ...

  5. CF-55 C.Pie or die

    做法:先把四个角分别覆盖一条边,于是问题转化为判断离边最近的一个点是否离边的距离大于等于4 #include<iostream> #include<cstdio> #inclu ...

  6. PHP常用数字函数以及排序函数

    一:数字函数 .ceil() 进一取整 示例:ceil(0.9) 结果为1 .abs() 绝对值 示例:abs(-1) 结果为1 .rand() 随机数 示例:rand(1. 100) 1到100 以 ...

  7. 消息队列的使用<一>:介绍、使用场景和JMS概念知识

    目录 介绍 消息队列的理解 举个栗子 使用场景 消息队列的模型与概念理解 JMS模型 基本概念: 内容: JMS定义的消息结构: PTP式消息传递 PUB/SUB式消息传递 可靠性机制 事务 消息持久 ...

  8. Python爬取信息管理系统计算学分绩点

    试手登录了下我们学校的研究生信息管理系统,自动计算学分绩点 # -*- coding:utf-8 -*- import urllib import urllib2 import re import c ...

  9. JAVA基础系列:ThreadLocal

    1. 思路 什么是ThreadLocal?ThreadLocal类顾名思义可以理解为线程本地变量.也就是说如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离,互 ...

  10. Anaconda入门教程【快速掌握】

    Anaconda 使用指南 概述 很多学习python的初学者甚至学了有一段时间的人接触到anaconda或者其他虚拟环境工具时觉得无从下手, 其主要原因就是不明白这些工具究竟有什么用, 是用来做什么 ...