2014-09-29 64 views
1

我運行一個xcodebuild命令:如何忽略bash命令的所有輸出到一個給定的標記

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

這將產生大量的未intesting輸出的,我可以用類似的東西過濾到this answerxcodebuild | egrep -A 5 "(error|warning):"

但是,我對全部的測試輸出感興趣。測試輸出在此行之後:

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

那麼有沒有辦法在上面的行之後grep或過濾所有內容?最好,這樣的錯誤警告過濾器被保留,即顯示該行,如果:

  • 無論是行包含「錯誤」或「警告」
  • 或線路是'Test Suite * started at*'行之後
+1

檢查[從匹配線文件打印行,直到文件結尾(http://stackoverflow.com/問題/ 3434462 /) – fedorqui 2014-09-29 16:03:13

+0

@fedorqui - 這看起來不錯,我會輸出到一個文件,然後'sed'呢? – Robert 2014-09-29 16:26:19

+1

你可以直接將命令傳遞給'sed',就像這些好的答案一樣。還要注意,你的一些輸出可能是'stderr',在這種情況下,你必須[將它重定向到'stdin'](http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/)。 – fedorqui 2014-09-30 08:14:31

回答

3

另一種選擇:

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

使用awk

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

最初,print_me有一個假值,所以裸print規則將不會被執行d。一旦找到與「測試套件啓動」行相匹配的行,print_me的值將切換爲真值,並且從此以後將爲每行執行print規則。

+0

謝謝你的回答! :)我收到很多錯誤,現在標記爲'流錯誤:錯誤在偏移量29:由不受支持的XCDependencyGraph構建創建',任何想法? – Robert 2014-09-29 17:30:14

+0

@Robert,這些錯誤與此答案無關。 – 2014-09-29 17:54:13

+0

請注意,沒有必要定義'print_me'。 awk中變量的默認值是0(或者null,或者其他),所以'print_me {print}'會起作用。另外,'print_me'本身也是一樣的,因爲awk的默認行爲是'{print $ 0}'。 – fedorqui 2014-09-29 18:38:59

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

使用awk

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