last | head -1
给我一行关于我系统上次登录的信息。它看起来像这样:Bash:获取制表符分隔的行的列
root pts/0 123.123.234.321 Sat Sep 23 20:38 still logged in
我想提取使用bash命令(也许AWK?)我怎么能做到这一点这个登录的IP地址和时间?最后,我应该结束了123.123.234.321 Sat Sep 23 20:38
last | head -1
给我一行关于我系统上次登录的信息。它看起来像这样:Bash:获取制表符分隔的行的列
root pts/0 123.123.234.321 Sat Sep 23 20:38 still logged in
我想提取使用bash命令(也许AWK?)我怎么能做到这一点这个登录的IP地址和时间?最后,我应该结束了123.123.234.321 Sat Sep 23 20:38
你不需要使用head
随着awk
,如awk
可以通过自身阅读的第一行,你可以请尝试以下,让我知道,如果这可以帮助你。
last | awk 'FNR==1{print $3,$4,$5,$6,$7}'
OR
last | awk 'FNR==1{print "Server login:",$3,$4,$5,$6,$7;exit}'
说明:使用最后一个命令来获得对系统的登录信息,然后利用管道(|)使用它的标准输出作为awk命令标准输入。现在在awk命令FNR == 1确保它应该在第一行运行,所以当这个条件成立时,打印该行的第3,4,5,6和7个字段。
PS:此外,如果你需要只读上次登录的话,我相信你可以使用{print $3,$4,$5,$6,$7;exit}
,这样就不会读最后一个命令的所有行,将是一个有点快了。
你可以把你所拥有的和管它awk
,如:
last | head -1 | awk '{print $3 " " $4 " " $5 " " $6 " " $7}'
样品:
awk '{print $3 " " $4 " " $5 " " $6 " " $7}'<<<'root pts/0 123.123.234.321 Sat Sep 23 20:38 still logged in'
123.123.234.321 Sat Sep 23 20:38
我把$3
之间的三个空格和$4
,因为这就是您的示例输出中的内容。
也许是这样的:
last | head -1 | tr -s ' ' | cut -d' ' -f3-7
其中tr -s
挤压多个空格转换为一个cut
印刷领域的3至7
谢谢,这并获得成功!现在你知道我如何在前面添加文本,所以输出看起来像'Server login:123.123.234.321 Sat Sep 23 20:38'? – quantumbutterfly
@quantumbutterfly,我现在在OR之后添加了解决方案。请检查它并让我知道这是否有帮助。 – RavinderSingh13