2017-10-24 2 views
0

Wenn ich einen Build, verwende ich oft make --print-data-base, um meine Dateien zu debuggen. Ich möchte jedoch nicht immer die gesamte Datenbank sehen.T-Stück, sed - wie Streifen aus Text mit einem Start-und Stop-Symbol zu streichen

Der Start der Datenbank wird mit # Make data base, printed on und der Stopp mit # Finished Make data base bezeichnet.

Ich weiß, ich könnte ein Skript machen, das dies tun würde, nachdem der Build fertig ist - vielleicht sollte ich das tun - aber gibt es einen Weg, es mit sed zu tun?

make all --print-data-base 2>&1 | tee build-with-data-base.err | sed **something** | tee build-with-no-data-base.err

Die Frage, die ich hier sehe, ist, dass es Zustand ist beteiligt: ​​wenn Sie den Start des Datenbankteils treffen, schalten Sie den Strom ab und wenn Sie das Ende treffen, schalten Sie den Strom wieder ein.

Ist es möglich, dies mit sed oder sollte ich es nur mit einem Skript tun?

+0

Sind Sie sicher, dass Sie Haben Sie keinen anderen make-Befehl oder eine Option, die Dateien für das Debug-Programm, aber nicht für die Datenbank ausgibt? Angesichts des aktuellen Flaggennamens scheint es einfach komisch. – Aaron

+0

@Aaron Ich müsste 'make' wieder ohne' --print-data-base' laufen lassen – Adrian

+0

Ich verstehe es nicht ... aber ich denke meine Antwort wird trotzdem funktionieren. – Aaron

Antwort

1

Mit GNU sed Sie Bereiche, deren Anfang und Ende sind beschrieben durch ein /test/ verwenden können:

echo "a 
b 
c 
d 
e 
f" | sed '/b/,/e/d' # delete the lines from b to e 
a 
f 

In Ihrem Fall, dass Sie möglicherweise die folgende sed Befehl verwenden:

sed '/# Make data base, printed on/,/# Finished Make data base/d'