Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从日志文件中删除日期_Regex_Awk_Sed - Fatal编程技术网

Regex 从日志文件中删除日期

Regex 从日志文件中删除日期,regex,awk,sed,Regex,Awk,Sed,我有一个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 sed中的Regex似乎在Regex测试人员中起作用,但这个sed没有做任何事情。我想知道问题出在哪里?欢迎使用b

我有一个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
sed中的Regex似乎在Regex测试人员中起作用,但这个sed没有做任何事情。我想知道问题出在哪里?欢迎使用bash工具(sed、awk等)提供任何提示。因为只有部分日志有日期,所以我不能使用

awk '{$1 = ""; print}'

因为我需要先进行检查。

此sed命令将执行以下操作:

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
sed -r -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile
Linux:

sed -E -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile
sed -r -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile

“切割”命令在此处易于应用:

cut -d " " -f "2-" logfile
这意味着:


如果每一行都被一个空格(分隔符,-d选项)分隔,则从第二行开始取所有项目

谢谢阿努巴瓦,但我意识到我不清楚。我只想要日期,但要保存时间戳。查看我的更新版原件。无论如何谢谢你的帮助。哦,我还得编辑。由于部分数据有日期,而部分数据没有日期,因此最新的sed会从没有日期的数据中删除时间戳。再次感谢您的时间和努力。您可以修改第一次编辑以避免时间戳:
sed的#^../[^]*.
(样本显示第一个日期元素填充到了两个位置,因此我们不需要在那里大惊小怪——当然,除非样本是错误的。)我发现
cut
sed
更容易理解!
sed -r -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile
cut -d " " -f "2-" logfile