grep来自日志文件的开始和结束时间 - AIX

时间:2016-04-03 09:45:13

标签: awk sed grep aix

日志文件如下所示

流程开始 - 2016-04-02-00.36.13

将文件放入daADadD for 文件将移至/ sadafJJHFASJFFASJ /

提取文件: - / ASFDSHAF_ ABC_2016-04-02.csv /ASFDSHAF_ABC.2016-04-02.csv / ASFDSHAF_ABC.2016-04-02.csv / ASFDSHAF_ ABC.2016-04-02.csv /

流程结束 - 2016-04-02-00.36.36

流程开始 - 2016-04-02-10.01.20

将文件放入daADadD for 文件将移至/ sadafJJHFASJFFASJ /

提取文件: - / sdshsdhsh_ cvb.2016-04-02.csv /sdshsdhsh_cvb.2016-04-02.csv /sdshsdhsh_cvb.2016-04-02.csv

流程结束 - 2016-04-02-10.01.21

有多个模式条目/流程开始 - 2016-04-02 / /流程结束 - 2016-04-02 / 如何在

之间找到模式为/ABC_2016-04-02.csv/的条目或块

1 个答案:

答案 0 :(得分:0)

你可以使用sed(至少使用GNU sed 4,抱歉没有AIX测试):

# read complete block into hold space
/Process Beginning/,/Process Ending/ {
    H
}

# "test" for csvfile in the block
/Process Ending/ {
    # get hold space (i.e. complete block)
    x 
    # if s did a "substition" (i.e. csvfile occured in the block): print
    s/ASFDSHAF_ABC.2016-04-02.csv/&/p
    # clear hold space for next block
    s/.*// 
    h
}

假设您的日志文件为grplog.log且脚本为grplog.sed,然后运行如下脚本:sed -n -f grplog.sed grplog.log

<强>解释

  • 脚本将处理块中的所有行读入第一部分的保留空间。
  • Process Ending行上触发的第二部分使用p命令的s标志:如果进行了替换,则打印新的模式空间。由于使用&旧的和新的模式空间是相同的。