AWK仅在变量和字符串之前打印字符串

时间:2019-05-31 16:45:40

标签: bash macos awk printing macos-sierra

我正在尝试使用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将被设置为计算机上的用户名

1 个答案:

答案 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获取所需的信息。