last | head -1
向我提供了一系列有关我系统上次登录的信息。它看起来像这样:
root pts/0 123.123.234.321 Sat Sep 23 20:38 still logged in
我想使用bash命令提取此登录的IP地址和时间(也许是awk?)我该怎么做?最后,我应该以{{1}}
结束答案 0 :(得分:3)
您不需要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}'
说明:使用last命令获取系统的登录详细信息,然后使用pipe(|)将其标准输出用作awk命令的标准输入。现在在awk命令中FNR == 1确保它应该在第一行运行,所以当这个条件成立时,然后打印该行的第3,第4,第5,第6和第7个字段。
PS:此外,如果您只需要读取最后一次登录,那么我相信您可以使用{print $3,$4,$5,$6,$7;exit}
,这样它就不会读取最后一个命令的所有行,而且会有点更快。
答案 1 :(得分:1)
你可以把你拥有的东西拿到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
之间放了三个空格,因为这样就是您的示例输出中的内容。
答案 2 :(得分:0)
也许是这样的:
last | head -1 | tr -s ' ' | cut -d' ' -f3-7
其中tr -s
将多个空格压缩为一个,cut
打印字段3到7。