lastlog的解析输出



我想撤回lastlog -u 'user'输出的第四个字段,但是使用cut -d' ' -f4我只能撤回第一个字段,否则要输出空间。

Username         Port     From             Latest
auser            pts/31   c-73-123-11-86.h Sun Jan 19 13:52:08 -0800 2014

我想删除'太阳1月19日13:52:08'。考虑到我想要的行中有多个空格,并且在输入不同长度的用户名时,我该怎么做。如何解决此问题?

我相信这将做您要求的

lastlog -u 'user' |  grep -v Latest | awk '{$1="";$2="";$3="";print $0 }'

在您的示例中,这将输出

Sun Jan 19 13:52:08 -0800 2014

看来,使用任何分符将lastlog输出分开是有问题的,因为某些字段 May 是空的:

ubuntu@ubuntu:〜$ lastlog -u ubuntu最新的用户名端口Ubuntu **永远不会登录**ubuntu@ubuntu:〜$

另外,您只能以正确数量的字符数cut,尽管如果输出在新版本中发生变化,这也可能是有问题的:

ubuntu@ubuntu:〜$ lastlog -u ubuntu |{ 读;切割-c44-;}**永远不会登录**ubuntu@ubuntu:〜$

注意read只需读取并丢弃lastlog输出的第一/标头线即可。

您可以将行的长度计算到字符串Latest并在此点切下:

$ lastlog -u $USER | (
    IFS= read -r line1
    IFS= read -r line2
    length=${#line1}
    echo "${line2::$((length - 6))}"
)

对于我的用户,这返回:

abcdef           tty1                      

(我没有此用户的"来自"值)

相关内容

  • 没有找到相关文章