2016-05-13 63 views
0
svn log -r HEAD:1 | grep $pattern --line-buffered | awk '{print $1}' 

上面打印出所有提交的修訂號匹配pattern(例如,由某個用戶完成)。這工作正常,除了它保持流式傳輸整個svn日誌(可能很長),並且只會在它結束後才結束。防止「頭」等待流結束

因爲我只需要最近的歷史我已經試過這樣:

svn log -r HEAD:1 | grep $pattern --line-buffered | awk '{print $1}' | head 

然而,這只是掛起 - 我假設它在等待流結束,但是這是不能接受我。

如何防止head等待流結束(並且在獲得10行之後立即完成)?

+0

是否打印10行並掛起? – 123

+0

不,它不打印任何東西 - 它只是等待輸入完成。 – NPS

+0

這真的很奇怪... – 123

回答

2

因爲我只需要最近的歷史

我想你需要-m選項與grep

試試這個:

svn log -r HEAD:1 | grep -m 1 "$pattern" 
  • -m NUM - 停止讀取文件後NUM匹配的行。
+0

完美!我只是沒有想到在'grep'中尋找這個。我可能會接受這個答案,但如果其他人有其他工作解決方案,我會等待一段時間。 – NPS

+0

提示你的編輯:我假設他們都在等待流 - 如果'head'有一個'-m'選項,比如'grep',那麼它也可以。或者我錯了? – NPS

+0

@NPS:'head'有一個像你說的選項,但它會一直等到整個流讀取完成並選擇前10行,參考我的答案,但@ sat的答案是聰明的,以限制流只讀10個實例 – Inian