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

Awk 日志文件中的grep开始和结束时间-AIX,awk,sed,grep,aix,Awk,Sed,Grep,Aix,日志文件如下所示 流程开始-2016-04-02-00.36.13 将文件放入daADadD以便 文件将移动到/sadafjhfasjffasj/ 提取文件:-/ASFDSHAF\uuuABC\u 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

日志文件如下所示

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

将文件放入daADadD以便 文件将移动到/sadafjhfasjffasj/

提取文件:-/ASFDSHAF\uuuABC\u 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以便 文件将移动到/sadafjhfasjffasj/

提取文件:-/sdshsdhsh\ustrong>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/的条目或块

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

假设您的日志文件是
grplog.log
,脚本是
grplog.sed
,然后像这样运行脚本:
sed-n-f grplog.sed grplog.log

说明:

  • 脚本将处理块中的所有行读取到第一部分的保留空间中
  • 过程结束
    行触发的第二部分使用
    s
    命令的
    p
    标志:如果进行了替换,则打印新的图案空间。由于使用了
    &
    旧的和新的图案空间是相同的

当我们为流程开始和结束多次出现时,它会起作用吗???@Sushma请提供日志文件中的示例行以供测试。@Sushma您所说的流程开始和结束多次出现是什么意思?几个街区?我用几个块测试了脚本。如果不适合你,请编辑问题并在示例中提供更多行。你能给我完整的答案吗scipt@SushmaBhandary脚本
grplog.sed
就是我答案中灰色区域中的内容。我在Linux上使用sed版本4.2.2,对我来说,脚本似乎可以工作。编辑后,我用新文件名替换了第11行中的csvfile。编辑您的问题以显示给定输入的预期输出。如果需要在块中搜索某些模式,请确保在示例输入/输出中同时包含与该模式匹配的块和与该模式不匹配的块。再次(也是最后一次)-编辑问题以显示给定该输入的预期输出。另外,还可以使用
{}
编辑器按钮使数据块或代码按原样显示,并删除您尝试添加的任何格式(例如,使用
**
将部分加粗)。使您的输入和输出在问题中的显示与在实际文件中的显示相同,以便我们可以针对它测试潜在的解决方案。
# 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
}