2012-07-02 68 views
1

我试图通过查看我的生产Rails日志文件来查找所有POST请求中发送的参数。现在,我只是使用以下内容:将两行分隔成一行

grep 'Started POST.*\/[fr]' log/production.log 

这显示我什么时候POSTs发生但不是参数。我想是做线沿线的东西:当它遇到上述

  • 打印的正则表达式

    1. 店线在sed的保持缓冲区保持缓冲区的内容和当前行,当它遇到“参数:”
  • 回答

    2

    据我所知,你需要显示行与正则表达式和下面的行。 grep可以做到这一点本身:

    grep -A1 'Started POST.*\/[fr]' log/production.log 
    

    sed它看起来像:

    sed -n '/Started POST.*\/[fr]/{N;p}' log/production.log 
    

    ,或者如果没有以后的所有行可能内容 “参数”,你只需要其中:

    sed -n '/Started POST.*\/[fr]/{N;/Parameters/p}' log/production.log 
    
    +0

    这正是我所需要的!谢谢!我会尽快接受它。 – higginbotham

    +0

    我实际上使用的是“grep -A2”启动POST。* \/[fr]'log/production.log | grep -v处理“。原因是在“参数”这一行之前有一行以“Processing”开头的行,我无法弄清楚如何使用sed来解决这个问题。 – higginbotham

    +0

    'sed -n'/ Started POST。* \/[fr]/{N;/Parametrs/{s /.* \ n //; p}}'' – rush

    2

    这应该做你要找的东西:

    sed -n '/Started POST.*\/[fr]/h;/Parameters/{H;g;p;q}' 
    

    它包含第一行并将其打印并包含“Parameters”参数。只打印第一组线。

    +0

    看起来它也会打印出每一行“参数”,而不仅仅是第一个匹配/ Started Post后的第一个。* \/[fr]/ – higginbotham

    +0

    @higginbotham:在'p'后面加上'q'。我会更新我的答案。 –

    +0

    谢谢!我希望我可以将两个答案标记为已接受的答案。 – higginbotham