从日志文件中删除两列

时间:2013-06-14 12:43:51

标签: regex sed awk grep cut

命令lastlog会返回四个字段,例如UsernamePortFromLatest

例如。

$ lastlog
Username         Port     From             Latest
root                                       **Never logged in**
daemon                                     **Never logged in**
bin                                        **Never logged in**
sys                                        **Never logged in**
sync                                       **Never logged in**
games                                      **Never logged in**

我只需要字段usernamelatest

如何使用grepawk

执行此操作

3 个答案:

答案 0 :(得分:3)

输出是固定宽度,并且不保证字段数,所以我会这样做:

$ lastlog | cut -c1-15,44-
Username       Latest
root           **Never logged in**
daemon         **Never logged in**
bin            **Never logged in**
sys            **Never logged in**
sync           **Never logged in**
games          **Never logged in**

根据您自己系统上lastlog的给定输出进行适当调整。

答案 1 :(得分:1)

原则上:

lastlog | awk '{print $1,$4}'

但是,您的最后一个字段由空格分隔,因此awk不会将其视为单个字段。如果您希望最后一部分使用cut

lastlog | cut -c 1-10,40- 

答案 2 :(得分:1)

GNU sed

sed -r 's/(.{10}).{25}/\1/' file

..输出是:

Username          Latest
root              **Never logged in**
daemon            **Never logged in**
bin               **Never logged in**
sys               **Never logged in**
sync              **Never logged in**
games             **Never logged in**