首页 > 解决方案 > 每次将带有 awk 的时间戳放在文件的开头

问题描述

每次调用 awk 命令时,我都试图将时间戳放在文件的开头

我有一个带有一些命令的脚本,我希望在运行命令时将该事件放入带有时间戳的日志文件中,但我希望该行每次都位于日志文件的开头。

用回声我可以做到,但它在文件末尾

echo "$(date +%d/%m/%Y) - $(date +%T)" ' - Script event 1' >> log.txt

我尝试使用 awk 但我无法打印日期时间

awk -i inplace 'BEGINFILE{print "$(date +%d/%m/%Y) - $(date +%T) - Script event 1"}{print}' log.txt

所以我想要这样的东西

awk -i inplace 'BEGINFILE{print "$(date +%d/%m/%Y) - $(date +%T) - Script event 1"}{print}' log.txt
(......
some commands
......)
awk -i inplace 'BEGINFILE{print "$(date +%d/%m/%Y) - $(date +%T) - Script event 2"}{print}' log.txt
(......
some commands
......)
awk -i inplace 'BEGINFILE{print "$(date +%d/%m/%Y) - $(date +%T) - Script event 3"}{print}' log.txt

我的输出 log.txt 是

01/01/2021 - 16:50:05 - Script event 3
01/01/2021 - 16:52:15 - Script event 2
01/01/2021 - 16:54:25 - Script event 1

标签: bashawk

解决方案


使用 GNU awk for-i inplace和 time 函数,用于strftime()在文件开头添加时间戳。

awk -i inplace 'BEGINFILE{print strftime("%d/%m/%Y - %T") " - Script event 1"}{print}' log.txt

推荐阅读