Awk 日志文件中的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 将文件放入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): 假设您的日志文件是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
grplog.log
,脚本是grplog.sed
,然后像这样运行脚本:sed-n-f grplog.sed grplog.log
说明:
- 脚本将处理块中的所有行读取到第一部分的保留空间中李>
- 在
行触发的第二部分使用过程结束
命令的s
标志:如果进行了替换,则打印新的图案空间。由于使用了p
旧的和新的图案空间是相同的&
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
}