如何为标准输出(stdout)的每一行添加时间戳?
给标准输出每一行添加时间戳的实用方案
嘿,这个需求我太懂了!当脚本输出一堆内容时,给每一行加上时间戳确实能帮你清晰追踪输出时序,下面几个方法亲测好用:
方法1:用ts命令(最简便)
ts是moreutils工具包中的小工具,专门用来给每行输出打时间戳,用起来超省心。
- 先安装工具包:
- Debian/Ubuntu系:
sudo apt install moreutils - CentOS/RHEL系:
sudo yum install moreutils
- Debian/Ubuntu系:
- 基础用法:直接把命令输出通过管道传给
ts就行# 默认格式:YYYY-MM-DD HH:MM:SS your_long_running_script.sh | ts - 自定义时间格式:比如只想显示时分秒,或者加个括号
ping google.com | ts '[%H:%M:%S]'
方法2:用awk命令(无需额外安装)
如果不想装新工具,awk是系统自带的神器,完全能搞定:
- 基础用法:
your_command | awk '{print strftime("[%Y-%m-%d %H:%M:%S]"), $0}' - 要是想把错误输出(stderr)也加上时间戳,就把stderr重定向到stdout:
your_command 2>&1 | awk '{print strftime("[%H:%M:%S]"), $0}'
注:strftime的格式参数和date命令的格式规则一致,你可以按需调整,比如%Y是年份,%H是24小时制小时数
方法3:写个复用的shell脚本
如果经常需要用,写个小脚本随时调用更方便:
- 创建脚本文件
timestamper.sh:#!/bin/bash # 读取每一行并添加时间戳 while IFS= read -r line; do echo "[$(date '+%Y-%m-%d %H:%M:%S')] $line" done - 赋予执行权限:
chmod +x timestamper.sh - 使用方式:
python your_data_processing_script.py | ./timestamper.sh
你可以修改date '+...'里的格式串,改成自己喜欢的时间样式。
内容的提问来源于stack exchange,提问作者Skynot
相关产品推荐
相关产品推荐

