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

Die oben druckt Revisionsnummern für alle Mal beenden verpflichtet, das Spiel der pattern (zum Beispiel von einem bestimmten Benutzer durchgeführt werden). Dies funktioniert gut, außer dass es das gesamte svn-Protokoll (das möglicherweise sehr lang ist) streamt und erst nach dem Ende endet.Prevent „Kopf“ für den Strom von Warte

Da ich nur die jüngste Geschichte brauche ich das versucht habe:

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

Doch dies hängt nur - ich nehme an, es für den Strom wartet bis zum Ende, aber das ist mir nicht akzeptabel.

Wie verhindere ich, dass head auf das Ende des Streams wartet (und stattdessen unmittelbar nach dem Erhalt von 10 Zeilen endet)?

+0

Drucken es die 10 Zeilen und hängen? – 123

+0

Nein, es wird nichts gedruckt - es wartet nur darauf, dass die Eingabe beendet wird. – NPS

+0

Das ist wirklich seltsam ... – 123

Antwort

2

Da ich brauche nur die jüngste Geschichte

Ich glaube, Sie -m Option erforderlich mit grep.

Versuchen Sie folgendes:

svn log -r HEAD:1 | grep -m 1 "$pattern" 
  • -m NUM - Stop eine Datei nach NUM passenden Zeilen zu lesen.
+0

Perfekt! Es ist mir einfach nicht in den Sinn gekommen, in 'Grep' danach zu suchen. Ich werde diese Antwort wahrscheinlich akzeptieren, aber ich werde einige Zeit warten, falls andere Leute andere Arbeitslösungen haben. – NPS

+0

A propos deine Bearbeitung: Ich nehme an, dass beide auf den Stream warten - wenn 'head' eine' -m' Option wie 'grep' hätte, dann sollte das auch funktionieren. Oder liege ich falsch? – NPS

+0

@NPS: 'Kopf' hat eine Option wie gesagt, aber es wird warten, bis der gesamte Stream gelesen wird, und die oberen 10 Zeilen auswählen, beziehen Sie sich auf meine Antwort, aber @ Sats Antwort ist schlau, den Stream nur zu lesen 10 Instanzen – Inian