日志文件如下所示
流程开始 - 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/的条目或块答案 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
标志:如果进行了替换,则打印新的模式空间。由于使用&
旧的和新的模式空间是相同的。