【发布时间】:2014-09-18 02:13:04
【问题描述】:
我有一个包含按顺序运行的测试的大文件。每个测试都有一个测试名称和测试数据。我想过滤掉所有失败的测试到一个单独的文件中。 - 测试名称用方括号括起来。 - 下例中的测试数据是每个测试中的4行 - 如果测试失败,它将包含关键字 FAILED。 这是一个简单的例子:
[CPU]
aaaa
bbbb
cccc
[Drives]
dddd
FAILED eeee
ffff
[Memory]
gggg
hhhh
iiii
[Power]
FAILED jjjj
FAILED kkkk
llll
[Graphics]
mmmm
nnnn
oooo
在此示例中,5 次测试中有 2 次失败,因此输出文件为:
[Drives]
dddd
FAILED eeee
ffff
[Power]
FAILED jjjj
FAILED kkkk
llll
使用 BASH,我可以使用 grep 查找失败的行,但我不知道如何提取包括测试名称在内的完整测试。我在想,在找到与 grep 的匹配项后,我会使用 do while 循环并将每一行输出到文件中,直到找到它上方和下方的 [] 为止。
【问题讨论】:
标签: bash file loops search grep