在给定标记之前,如何忽略bash命令的所有输出

时间:2014-09-29 15:59:00

标签: xcode bash shell xcodebuild

我正在运行xcodebuild命令:

xcodebuild -workspace MyWorkspace.xcworkspace \
           -scheme "$XCODE_SCHEME_NAME" \
           -archivePath $ARCHIVE_PATH \
           -destination "$TEST_DESTINATION_DEVICE" \
           test

这会产生大量非衍生输出,我可以使用与this answer xcodebuild | egrep -A 5 "(error|warning):"类似的内容进行过滤

但是,我对所有测试输出感兴趣。测试输出在此行之后:

Test Suite 'All tests' started at 2014-09-29 14:04:54 +0000

那么有没有办法在上面的行之后grep或过滤掉所有内容?优先保留错误警告过滤器,即显示以下行:

  • 该行包含“错误”或“警告”
  • 或该行在'Test Suite * started at*'
  • 之后

4 个答案:

答案 0 :(得分:3)

另一种选择:

xcodebuild ... | sed '1,/^Test Suite/d'

答案 1 :(得分:1)

使用awk

xcodebuild ... | awk -v print_me=0 '/^Test Suite/ { print_me=1 }; print_me { print };'

最初,print_me具有错误值,因此不会执行裸print规则。一旦看到与“Test Suite started”行匹配的行,print_me的值将切换为真值,并且从那时起将对每行执行print规则。

答案 2 :(得分:1)

xcodebuild ... | grep -A 999999999 "search string"

答案 3 :(得分:1)

使用awk

xcodebuild ... | awk '/^Test Suite/{test=1; next}test'