0

伙计们

我有一个输出文件看起来像:

Title: [name of component]
**garbage output**
**garbage output**
Test run: succuess 17 failure 2
**garbage output**
**garbage output**

并且有很多这样的组件。我无法改变输出的方式。所以我只想抓住标题和测试结果的行。

我的问题是,如何编写正则表达式来实现这一点?

我试过了:

cat output | sed -e 'm/Tests run(.*)/g'

但它总是抱怨:未知命令'm'

除正则表达式外的其他方法也将不胜感激!!!

非常感谢

4

1 回答 1

3

你不需要猫,试试

  grep -E '^Title:|^Test run' fileName

在较旧的系统上,您可能需要使用egrep '^Title...'.

编辑

我想从结果中排除带有特定前缀的标题,例如“标题:foo XXX”或“标题栏 XXX”。

grep -E 肯定有一个正则表达式可以处理这个问题,但是对于命令行工作的前几年,并且您似乎正在使用它来清理 test.log 输出,最好使用 unix 工具箱方法,在这种情况下,“让某些东西起作用并添加更多内容”,即

  grep -E '^Title:|^Test run' fileName | egrep -v '^Title: foo XXX|^Title:bar XXX'

这就是unix管道的威力,输出太多了?,然后继续添加更多grep -v的s来清理它。

请注意,这*grep -v意味着排除与以下模式匹配的行。

我希望这有帮助

于 2012-04-20T18:51:24.050 回答