我正在尝试使用awk打印将最后一条命令中的数据转换为时代。该代码始终可以在10.14.5上运行,并且有时可以在10.13.6上运行。当我今天早上开始工作时,它运行良好,然后大约11点开始给我错误。
基本上,awk依次打印文字字符串,换行符,文字字符串和变量。例如, 如果$ 1 =“ Hello”,则:
awk '{print $1,"World"}'
实际上是在印刷“世界 你好,世界”
给出错误的实际代码行是这样的:
x=$(last -1 $a | awk '{print $3 " "$4 " " $5 " " $6 ":00 EDT "}')
例如,应在其中将x设置为“ Fri May 31 12:43:00 EDT”,将x设置为“:00 EDT 5月31日,星期五12:43:00 EDT“
编辑:我应该说代码行中的$ a将被设置为计算机上的用户名
答案 0 :(得分:0)
在我的High Sierra系统上,last -1 barmar
不打印任何有用的信息。我的Mac已经运行了9天(自从我安装了最新的安全更新以来)。运行需要8秒钟,并且仅打印:
wtmp begins Fri May 31 12:53
因此,有一个空白行,然后是说明wtmp
从哪里开始的行,这似乎总是当前时间。
因此awk
脚本正常运行。第一行没有任何字段,因此所有$n
值都将为空,而您仅得到:00 EDT
。第二行包含wtmp begins
行,并在输出中创建Fri May 31 12:48:00 EDT
(即使您使用了-1
,它仍然会产生两行输出)。结合它们,您将得到
$ echo "$x"
:00 EDT
Fri May 31 12:48:00 EDT
Terminal 'last' command doesn't display login history声称sudo last
应该有效,但不适用于我。
How do you stop wtmp from erasing?建议从/var/log/monthly.out
获取所需的信息。