【问题标题】:Extract log file提取日志文件
【发布时间】:2011-03-05 06:45:26
【问题描述】:

xxxxxxxxmessageyyyyyyymessagexxxxxxxxxx

xxxxxxxxmessagezzzzzzzmessagexxxxxxxxxx

xxxxxxxxmessageaaaaaaamessagexxxxxxxxxx

xxxxxxxxmessageyyyyyyymessagexxxxxxxxxx

以上是我的日志文件,我需要提取消息标签内的短语,我需要将不同的消息保存在一个文件中,在上面的示例中,我需要将 zzzzzzz 和 aaaaaaa 保存到一个文件中。

我需要使用哪些 unix 命令。

【问题讨论】:

  • 哪个程序产生这样的日志文件? :-S
  • 你的问题很不清楚。通过“消息标签”,我想您的意思是行首有 8 个 x,行尾有 10 个 x。 “distinct”是指一条消息应该只记录一次吗?您是因为重复,还是因为它们位于第一行和最后一行而忽略了 yyyyyyy?
  • 因为重复而省略 ys
  • yyyyyyy
  • 当我尝试打印时,整个消息标签正在消失......这就是为什么我删除了大于和小于符号的原因

标签: unix scripting shell


【解决方案1】:

awk:

BEGIN
{
  s=0
}

s==0 && /yyyyy/
{
  s=1
  next
}

s==1 && /yyyyy/
{
  exit
}

{
  print
}

使用awk -f script.awk < infile > outfile 运行。

【讨论】:

    【解决方案2】:

    有十几种方法可以做到这一点。我测试的那个:

    (sed 's/xx//g' | sed 's/message//g')<tstlog >processed.log
    

    成功

    yyyyyyy
    
    zzzzzzz
    
    aaaaaaa
    
    yyyyyyy
    

    另外,如果你想省略空行,你可以添加如下内容:

    (sed 's/xx//g' | sed 's/message//g' | grep -v ^$) < tstlog >processed.log
    

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2018-09-08
      相关资源
      最近更新 更多