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



日志文件如下

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

将文件放入daADadD文件将移动到/sadafJJHFASJFFASJ/

提取文件:-/ASFDSHAF_ABC_2016-04-02.csv/ASFDSHAF_ABC.2016-04-02.csv/ASFDSHAF_ABC.2016-04-02.csv/ASFDSHAFABC.2016-04-2.csv/

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

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

将文件放入daADadD文件将移动到/sadafJJHFASJFFASJ/

提取文件:-/sdshsdhshcvb.2016-04-02.csv/sdshsdhsh_cv.2016-04-02.csv/sdshsdhs h_cv.2016 04-02.csv

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

模式/流程开始-2016-04-02//流程结束-2016-04-02有多个条目/如何在之间找到模式为/ABC_2016-04-02.csv/的条目或块

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

# 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行触发的第二部分使用s命令的p标志:如果进行了替换,则打印新的图案空间。由于使用了&,新旧图案空间是相同的

相关内容

最新更新