这是我用来从“my_file”中提取某些rec的代码:
awk '/Exception/ && !/ExceptionUnparseable date/ {
haveEx="yes"; ex=$0; **exDate=last**}
haveEx && /tms/ {
print exDate; print ex; haveEx=""}
{last = $0} ' my_file
我的要求是。 exDate = last - >我的代码的这部分应该存储到我的匹配中的记录。但不幸的是,有时需要检查比赛中的许多记录。
所以简而言之我需要将“最后”记录与“正则表达式”匹配\ ^ [0-9] [0 - ] * \如果它不匹配,那么我需要向后移动一个记录,比如直到我的reg - exp匹配。如果匹配我需要将该记录存储在变量“exDate”中,如上所述。
到目前为止我所做的是尝试在awk中设置if条件,但不确定如何在req匹配之前跟踪越来越多。
答案 0 :(得分:3)
您可以独立于其他模式匹配存储日期模式,并在满足该模式后进行打印。这样您就不需要回搜索了。如果我正确理解你的问题,这应该有用
$ awk '/^[0-9-]*$/{lastDate=$0}
/pattern1/{exDate=lastDate; lastDate=""}
pattern2/&&exDate{print exDate}' << EOF
> asdf
> asdf
> 2015-11-20
> asdfa
> pattern1
> asdfa
> asdfa
> pattern2
> asdf
> asdf
> EOF
2015-11-20