linux - 如何使用 awk 命令在日志文件中添加“日期”作为列
问题描述
我正在尝试构建自己的硬件监视器,但我一直在尝试将时间戳放在我的日志文件中。
我正在使用“ps axu”来获取结果,并尝试在将结果发送到文件之前使用 awk 过滤结果。
使用以下命令:
ps axu |awk 'NR==1 {print $0}; $3 > 0'
我得到这个结果:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user+ 1421 0.1 0.9 304212 36384 tty2 Sl+ Oct27 4:11 /usr/lib/
user+ 1584 0.1 2.0 3626228 82152 ? Ssl Oct27 5:43 /usr/bin/
user+ 2096 0.7 14.6 4197076 587032 ? Sl Oct27 22:14 /usr/lib/
user+ 2248 0.5 8.4 3147328 340168 ? Sl Oct27 14:48 /usr/lib/
user+ 2272 1.0 14.6 3298264 587372 ? Sl Oct27 30:47 /usr/lib/
user+ 18658 0.1 0.0 12232 2468 pts/1 S+ Oct28 1:03 top
我想将此发送到一个新文件,添加一个带有时间戳的列,如下所示:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND TIMESTAMP
user+ 1421 0.1 0.9 304212 36384 tty2 Sl+ Oct27 4:11 /usr/lib/ Thu 29 Oct 2020 09:00:42 AM EDT
user+ 1584 0.1 2.0 3626228 82152 ? Ssl Oct27 5:43 /usr/bin/ Thu 29 Oct 2020 09:00:42 AM EDT
user+ 2096 0.7 14.6 4197076 587032 ? Sl Oct27 22:14 /usr/lib/ Thu 29 Oct 2020 09:00:42 AM EDT
user+ 2248 0.5 8.4 3147328 340168 ? Sl Oct27 14:48 /usr/lib/ Thu 29 Oct 2020 09:00:42 AM EDT
user+ 2272 1.0 14.6 3298264 587372 ? Sl Oct27 30:47 /usr/lib/ Thu 29 Oct 2020 09:00:42 AM EDT
user+ 18658 0.1 0.0 12232 2468 pts/1 S+ Oct28 1:03 top Thu 29 Oct 2020 09:00:42 AM EDT
我尝试使用 awk 来执行此操作,但是在执行命令“date”并将其作为参数传递给 awk 时,我得到了一些奇怪的结果。
这会添加一个带有“0”的列作为结果:
ps axu |awk 'NR==1 {print $0}; $3 > 0'|awk '{print $0, system(date) }'
这会在新行而不是新列中添加时间戳:
ps axu |awk 'NR==1 {print $0}; $3 > 0'|awk -v var1=date '{print $0 system(var1) }'
解决方案
这会添加一个带有“0”的列作为结果:
ps axu |awk 'NR==1 {print $0}; $3 > 0'|awk '{print $0, system(date) }'
AWK 的系统确实返回命令的(在这种情况下date
:)退出状态(在这种情况下:0
即一切正常)。system
如果您对命令的输出感兴趣,这不是正确的工具。
GNU AWK 有自己的时间函数,可以让你得到你想要的 -systime()
自纪元开始以来提供第二个,strftime
允许你将其格式化为人类可读的形式,例如,你可以得到 YYYYMMDD HH:MM:SSstrftime("%Y%m%d %H:%M:%S", systime())
推荐阅读
- java - JAAS:连接到具有不同主体的不同 Kerberized Hadoop 服务?
- c# - 正则表达式重复的字符序列
- windows - 如何根据文件夹名称识别最新的应用程序构建文件夹
- python - 如何将 tkinter 窗口的内容复制到演示幻灯片?
- sql - 在 SQL 中,主表应与多列的查找表匹配
- java - 我想快速进入图表但绘制缓慢
- webpack - Webpack 构建任务覆盖优化
- go - 如何在 golang webview 中指定浏览器?
- cors - CORS 问题:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权
- swift - 在 collectionview 单元格中添加到 uiview 时,点击手势无法按预期工作