我需要解析一些日志文件,其中数据以特定模式重复。我需要在数据中搜索特定的“关键字”,然后从下一行中提取数据。我需要为整个文件继续这个。 我知道这可以使用基本的perl脚本来完成。但是,我们是否有任何perl模块可以简化这种功能?
答案 0 :(得分:1)
可能没有这样的模块,因为代码非常简单,而OTOH 的细节特定于问题。
我多次遇到过类似的问题。输入类似于:
Date: 2011-11-10
<an interesting line>
<another interesting line>
Date: 2011-11-11
<more interesting lines>
我需要提取所有“有趣的线条”,同时知道每个的有趣日期。我认为oneliners或short throwaway脚本已经非常成功。对于oneliner,熟悉-l
和-a
等有用的东西是件好事。 perl -wlane '...'
这是我写了一千遍的东西。
答案 1 :(得分:0)
您可以查看cgrep
,这是此类处理的一个示例。它可以用在管道中,即
cat mylog | cgrep -w0:1 'regexp' | grep -v 'regexp' | sed 's/.../.../'
换句话说,grep用于regexp,在匹配前输出0行,然后输出一行,然后删除原始匹配,并格式化结果。你可能不想在最后一步使用sed
,这只是一个例子。
cgrep
出现在Programming Perl(Camel)书的最早版本中。 It's pretty easy to find
答案 2 :(得分:0)
感谢您提出其他选择。 实际上我发现使用'touch-flop'操作符和'if'非常恰当地解决了我的问题。在使用了这个之后,我才意识到,要求一个“模块”来完成这样一个微不足道的任务太多了。)。