linux - ubuntu awk 如何获取最后一个用户和时间数据?
问题描述
我的last
数据信息如下:
test@test:~$ last
test pts/0 172.25.48.1 Mon Sep 14 08:38 still logged in
test pts/2 172.25.48.1 Mon Sep 14 03:32 still logged in
test pts/1 172.25.48.1 Mon Sep 14 03:31 still logged in
test pts/1 172.25.48.1 Mon Sep 14 03:22 - 03:31 (00:08)
test pts/0 172.25.48.1 Mon Sep 14 03:00 - 03:39 (00:39)
test pts/0 172.25.48.1 Mon Sep 14 02:11 - 02:50 (00:38)
test pts/0 172.20.80.1 Sun Sep 13 11:34 - 17:02 (05:27)
test pts/0 172.20.80.1 Sun Sep 13 11:33 - 11:33 (00:00)
test tty1 Sun Sep 13 10:53 gone - no logout
reboot system boot 5.4.0-47-generic Sun Sep 13 10:53 still running
test pts/1 172.20.80.1 Wed Sep 9 08:39 - 11:52 (2+03:12)
test pts/0 172.20.80.1 Wed Sep 9 07:04 - 08:45 (01:40)
reboot system boot 5.4.0-47-generic Wed Sep 9 03:06 still running
reboot system boot 5.4.0-47-generic Wed Sep 9 03:04 still running
test tty1 Wed Sep 9 03:03 - crash (00:00)
reboot system boot 5.4.0-47-generic Wed Sep 9 03:03 still running
test pts/0 172.20.80.1 Wed Sep 9 03:02 - crash (00:01)
test tty1 Wed Sep 9 02:51 - crash (00:12)
reboot system boot 5.4.0-47-generic Wed Sep 9 02:50 still running
预期:我想获得以下信息:
test Mon Sep 14 08:38
test Mon Sep 14 03:32
test Mon Sep 14 03:31
test Mon Sep 14 03:22
test Mon Sep 14 03:00
test Mon Sep 14 02:11
test Sun Sep 13 11:34
test Sun Sep 13 11:33
test Sun Sep 13 10:53
reboot Sun Sep 13 10:53
test Wed Sep 9 08:39
test Wed Sep 9 07:04
reboot Wed Sep 9 03:06
reboot Wed Sep 9 03:04
test Wed Sep 9 03:03
reboot Wed Sep 9 03:03
test Wed Sep 9 03:02
test Wed Sep 9 02:51
reboot Wed Sep 9 02:50
实际上:但我试图命令last | awk '{print $1"\t"$4}'
,系统返回数据如下:
test@test:~$ last | awk '{print $1"\t"$4}'
test Mon
test Mon
test Mon
test Mon
test Mon
test Mon
test Sun
test Sun
test Sep
reboot 5.4.0-47-generic
test Wed
test Wed
reboot 5.4.0-47-generic
reboot 5.4.0-47-generic
test Sep
reboot 5.4.0-47-generic
test Wed
test Sep
reboot 5.4.0-47-generic
wtmp Sep
更新
我试过last --time-format iso | awk '{print $1"\t"$4}'
了,但有些数据有误。
test@test:~$ last --time-format iso | awk '{print $1"\t"$4}'
test 2020-09-14T08:38:15+00:00
test 2020-09-14T03:32:02+00:00
test 2020-09-14T03:31:33+00:00
test 2020-09-14T03:22:37+00:00
test 2020-09-14T03:00:05+00:00
test 2020-09-14T02:11:39+00:00
test 2020-09-13T11:34:43+00:00
test 2020-09-13T11:33:36+00:00
test gone
reboot 5.4.0-47-generic
test 2020-09-09T08:39:02+00:00
test 2020-09-09T07:04:41+00:00
reboot 5.4.0-47-generic
reboot 5.4.0-47-generic
test -
reboot 5.4.0-47-generic
test 2020-09-09T03:02:08+00:00
test -
reboot 5.4.0-47-generic
解决方案
如果您的输出是示例中显示的固定宽度字段,并且您有 GNU awk,那么:
$ cat file | awk -v FIELDWIDTHS='9 30 16' '{print $1 $3}'
test Mon Sep 14 08:38
test Mon Sep 14 03:32
test Mon Sep 14 03:31
test Mon Sep 14 03:22
test Mon Sep 14 03:00
test Mon Sep 14 02:11
test Sun Sep 13 11:34
test Sun Sep 13 11:33
test Sun Sep 13 10:53
reboot Sun Sep 13 10:53
test Wed Sep 9 08:39
test Wed Sep 9 07:04
reboot Wed Sep 9 03:06
reboot Wed Sep 9 03:04
test Wed Sep 9 03:03
reboot Wed Sep 9 03:03
test Wed Sep 9 03:02
test Wed Sep 9 02:51
reboot Wed Sep 9 02:50
在上面我正在使用我没有cat file
的地方。last
推荐阅读
- java - javax.xml.transform.Transformer的Transformer如何抑制对html文本框编码值的解码
- .net-core - Ocelot 发布请求未通过
- git - 推送到 GitHub,如何用敏感信息替换配置文件?
- django - 如何将图像上传到 Django
- html - 全屏宽度的卡盒 - 引导程序
- sql - 使用某些条件匹配模式并使用 Oracle 中的 regexp_replace 将其替换为某个字符串
- python - 将单线从 Numpy Python 转换为 Julia,其中涉及将一个 2D 数组映射到另一个 2D 数组
- drawing - Use clipboard images to draw paths that repeat over entire length of the line
- azure-data-factory - 将文件从一个区域复制到其他区域 - Azure Data Lake Gen2
- reactjs - React-native:无法获取本地颁发者证书