我有一个如下的irc日志
04/14/13 21:38<@Hamatti> Lorem ipsum dolor sit amet
04/14/13 21:39<@Hamatti> consectetur adipiscing elit.
04/14/13 21:45<@Hamatti> Duis facilisis convallis lacus
EDIT1 即可。对不起,我的意图并不清楚。所以我希望前面的输出是
21:38<@Hamatti> Lorem ipsum dolor sit amet
21:39<@Hamatti> consectetur adipiscing elit.
21:45<@Hamatti> Duis facilisis convallis lacus
所以时间很重要。
EDIT2 还有部分日志,早期格式为
20:12<@Hamatti> Something.
20:13<@Hamatti> Funny.
20:13<@Hamatti> Happened.
我需要对这些行进行非修改。
由于我的旧日志格式没有日期戳,我想从以后的日志中删除日期。
sed 's/[0-9]{2}\/[0-9]{2}\/[0-9]{2}//g' logfile
sed中的正则表达式似乎适用于正则表达式测试人员,但这个sed没有做任何事情。我想知道问题出在哪里?有关bash工具(sed,awk等)的任何提示都非常受欢迎。由于只有部分日志具有日期,因此我无法使用类似
的内容awk '{$1 = ""; print}'
因为我首先需要检查。
答案 0 :(得分:5)
这个sed命令可以完成这项工作:
sed -i.bak 's/^[^<]*//' logfile
编辑:根据您的评论,这只会清除日期部分并保留时间戳:
sed -i.bak 's/^[^ ]* //' logfile
编辑2 :根据您的第二次编辑问题:
sed -i.bak 's#^[0-9]*/[0-9]*/[0-9]* ##' logfile
或者在sed中使用扩展的正则表达式功能:
<强>的Mac:强>
sed -E -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile
<强> Linux的:强>
sed -r -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile
答案 1 :(得分:3)
剪切命令很容易在这里应用:
cut -d " " -f "2-" logfile
这意味着:
如果每一行都用空格分隔(分隔符,-d选项),则从第二行开始,然后从中获取所有项目。