行间读取(perl或awk)

行间读取(perl或awk),perl,scripting,awk,while-loop,sh,Perl,Scripting,Awk,While Loop,Sh,大家好,很抱歉在这里发布此消息,我在任何地方都找不到答案,我的解决方案也不起作用。我有一个日志文件正在以以下方式编写(不要问): 我想做的是(在perl或awk中,因为这是一个RTOS): 查看该文件,如果Variable1存在,则从Variable2开始打印等号之间的所有内容: 例如 awk'/Mary had/{getline;getline;getline;print}' 将只打印 04-12-2011 11:37:20 SOMETHING_GOES_HERE 但我需要的是等号之间的一

大家好,很抱歉在这里发布此消息,我在任何地方都找不到答案,我的解决方案也不起作用。我有一个日志文件正在以以下方式编写(不要问):

我想做的是(在perl或awk中,因为这是一个RTOS):

查看该文件,如果Variable1存在,则从Variable2开始打印等号之间的所有内容:

例如

awk'/Mary had/{getline;getline;getline;print}'

将只打印

04-12-2011 11:37:20 SOMETHING_GOES_HERE 
但我需要的是等号之间的一切。我试图破坏一个perl脚本,但它也不起作用。有什么想法吗


好吧,这起作用了(有点)

将打印测试,但是尚未找到获得单词测试的方法(将始终是不同的单词,但单词foo将始终保留)。任何人(顺便说一句,非常感谢)

local$/=“\n=========================================================\n”;
而(){
咀嚼;
...
}
备选方案:

my $rec = '';
while (<>) {
   if (!/^=============================$/) {
      $rec .= $_;
      next;
   }

   ...

   $rec = '';
}
my$rec='';
而(){
如果(!/^=======================================================$/){
$rec.=$\uux;
下一个
}
...
$rec='';
}

我不完全清楚“Variable1/2”等是否为常量字符串或实际变化的量子数,但这是否有效:

if [ $(grep Variable1 $file | wc -l) -gt 0 ]; then
  sed -n '/Variable2/,/=======/' $file
fi

我对
有点迷茫,如果Variable1存在,那么从Variable2开始。你能解释一下吗?我想他是想在两行之间进行匹配,比如
/Variable1//Variable2/
@Geo不会打印等号之间的所有内容
如果grep-q Variable1$file;然后…
#!perl -w
use strict;

my $LOGFILE = "/home/mydir/MyTestFile";
open my $fh, "<$LOGFILE" or die("could not open log file: $!");
my $in = 0;

while(<$fh>)
{
    $in = 1 if /Variable1/i;
    print if($in);
    $in = 0 if /Variable2/i;
}
echo "
test
hello
foo
bar" | awk '/foo/{print x};{x=$0}'
local $/ = "\n=============================\n";
while (<>) {
   chomp;
   ...
}
my $rec = '';
while (<>) {
   if (!/^=============================$/) {
      $rec .= $_;
      next;
   }

   ...

   $rec = '';
}
if [ $(grep Variable1 $file | wc -l) -gt 0 ]; then
  sed -n '/Variable2/,/=======/' $file
fi