我想撤销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
我想删除'Sun Jan 19 13:52:08'。考虑到我想要的行中有多个空格,并且使用具有特定下标位置的剪切将在输入不同长度的用户名时产生错误结果,我该怎么做呢?我该如何解决这个问题?
答案 0 :(得分:2)
我相信这会做你要求的事情
lastlog -u 'user' | grep -v Latest | awk '{$1="";$2="";$3="";print $0 }'
在您的示例中,这将输出
Sun Jan 19 13:52:08 -0800 2014
答案 1 :(得分:1)
似乎使用任何分隔符来分隔lastlog
输出是有问题的,因为某些字段可能为空:
ubuntu@ubuntu:~$ lastlog -u ubuntu Username Port From Latest ubuntu **Never logged in** ubuntu@ubuntu:~$
或者你可以cut
使用正确的字符数,但如果输出在新版本中发生变化,这也可能会出现问题:
ubuntu@ubuntu:~$ lastlog -u ubuntu | { read; cut -c44- ;} **Never logged in** ubuntu@ubuntu:~$
注意read
只是读取并丢弃lastlog
输出的第一个/标题行。
答案 2 :(得分:0)
您可以将行的长度计算到字符串Latest
并在此处剪切:
$ lastlog -u $USER | (
IFS= read -r line1
IFS= read -r line2
length=${#line1}
echo "${line2::$((length - 6))}"
)
对于我的用户,它返回:
abcdef tty1
(此用户没有“发件人”值)