我使用以下命令获得了最后一个命令的输出
last -w -F | awk '{print $1","$3","$5$6$7$8","$11$12$13$14","$15}' | tac | tr ',' '\t'
现在对于相同的输出我想添加以下列名,然后复制到csv文件或xls文件。
有人可以帮助我。
列名
USERNAME
HOSTNAME
LOGIN_TIME
LOGOUT_TIME
DURATION
输出看起来像这样
oracle localhost 2015 2.30
root localhost 2014 2.30
感谢你的帮助。
答案 0 :(得分:1)
试试这个:
last -w -F | awk '{print $1,$3,$5$6$7$8,$11$12$13$14,$15} END{print "USERNAME\tUSERNAME\tHOSTNAME\tHOSTNAME\tLOGIN_TIME\tLOGIN_TIME\tLOGOUT_TIME\tLOGOUT_TIME DURATION"}' OFS='\t' | tac
我在awk的END
语句中添加了标题。这样,在tac
运行后,标题将在开头。
我还将awk的OFS设置为选项卡,以便不再需要tr步骤。
我无法对此进行全面测试,因为我的last
命令显然会产生与您不同的格式。
要将上述输出写入文件,我们使用重定向:将stdout发送到文件:
last -w -F | awk '{print $1,$3,$5$6$7$8,$11$12$13$14,$15} END{print "USERNAME\tUSERNAME\tHOSTNAME\tHOSTNAME\tLOGIN_TIME\tLOGIN_TIME\tLOGOUT_TIME\tLOGOUT_TIME DURATION"}' OFS='\t' | tac >new.tsv
上面的代码生成一个制表符分隔的文件。选择制表符分隔格式的选项后,Excel应该能够读取此文件。
如果想要一个以逗号分隔的文件,那么我们需要的只是\t
替换,
:
last -w -F | awk '{print $1,$3,$5$6$7$8,$11$12$13$14,$15} END{print "USERNAME,USERNAME,HOSTNAME,HOSTNAME,LOGIN_TIME,LOGIN_TIME,LOGOUT_TIME,LOGOUT_TIME DURATION"}' OFS=',' | tac >new.csv
如果我没记错的话,可以使用file-> open->文本文件在excel中打开它。