我有一个日志文件,其中日志文件行前面加上以下时间戳格式:
%Y-%m-%d_%H:%M:%S :(最后一个结肠是故意的)
如何使用sed删除时间戳(通过sed捕获日志文件)?我有一些sed的经验,虽然我不确定最好的方法是什么
编辑:这是标准日志行的样子:
2014-04-12_01:55:12:4391465被禁止。
'12:'之后的所有内容应该在删除时间戳之后保留
谢谢
答案 0 :(得分:2)
您只需要从行的开头删除固定数量的字符:
sed 's/^.\{20\}//' logfile
如果您的sed
支持-r
选项(对于OSX,请使用-E
),则可以删除反斜杠:
sed -r 's/^.{20}//' logfile
在您的样本行上,上面会产生:
4391465 banned.
只要日期戳中的字符数固定,就不需要sed
。 cut
也可以使用:
cut -c21- logfile
如果字符数没有修复,也就是说,如果这些数字没有像你那样完全零填充,那么更复杂的sed
命令将按顺序排列:
sed 's/^\([0-9]\+[_:-]\)\{6\}//' logfile
上面会查找六组数字,然后是分隔符并将其删除。由于您的时间戳有六个这样的集合(年,月,日,小时,分钟,秒),这可以满足您的需求。
答案 1 :(得分:0)
由于你有3个冒号,你也可以将它们用作分隔符。
cut -d":" -f4 log.txt