2016-09-06 1 views
0

Ich mache gerade ein Skript, das die nächsten Abfahrten von einer U-Bahn Haltestelle direkt an mir zeigen wird.Verwenden von Regexes, um Linien zwischen zwei Strings zu entfernen

Ich habe ein Muster (\b\d$|Westbound), die die Zeilennummer und Richtung erfassen wird. Wie aber entfernt man die Linien dazwischen? Nach etwas zu suchen hat mir dafür keine Ergebnisse gebracht.

die Ausgabe vor:

5 
Ringen via Storo 
12 min 
Eastbound 

4 
Vestli via Storo 
16:10 
Westbound 

5 
Vestli via Majorstuen 
16:11 
Eastbound 

5 
Ringen via Majorstuen 
16:12 
Westbound 

Im Format:

Line 
Name of line 
Time 
Direction 

Die Frage ist, gibt es eine Möglichkeit, mit sed, dass ich gehen alle Zeilen herausfiltern können, sagen wir, in Richtung Westen, so dass die einzigen gedruckten Linien wären:

5 
Ringen via Storo 
12 min 
Eastbound 

5 
Vestli via Majorstuen 
16:11 
Eastbound 

Dies jedes Segment Text entfernen würde bedeuten, dass wi beginnt th und endet mit Westbound. Ist dies mit Regexes und eingebauten Tools in bash möglich, oder wäre es besser, einen Workaround für dieses Problem zu finden?

Vielen Dank im Voraus!

+3

Okay, so dass Sie ziemlich gut wissen, was Sie tun wollen, schlage ich vor, dass Sie tatsächlich versuchen, es zu tun. StackOverflow ist nicht der Ort, an dem Leute Programme für Sie implementieren, es ist der Ort, an dem Sie das Programm implementieren und die Leute helfen Ihnen, wenn Sie eine bestimmte Frage haben. – Tomalak

+0

Wird die obige Ausgabe von einem Skript erzeugt, das _you_ geschrieben hat? Wenn ja, warum nicht das Skript ändern? – redneb

+0

Regex könnte hier Teil der Lösung sein, aber ich denke, dass Sie ein zusätzliches Werkzeug benötigen, um jeden Absatz einzulesen und zu verarbeiten. Vielleicht kann sed dies tun, Java und C# sicherlich können. –

Antwort

0

das Ausführen -

echo '5 
Ringen via Storo 
12 min 
Eastbound 

4 
Vestli via Storo 
16:10 
Westbound 

5 
Vestli via Majorstuen 
16:11 
Eastbound 

5 
Ringen via Majorstuen 
16:12 
Westbound' | gawk 'BEGIN { 
    FS="\n" 
    RS="" 
} 
$4 != "Westbound" { 
    print 
}' 

- erzeugt die folgende Ausgabe -

5 
Ringen via Storo 
12 min 
Eastbound 
5 
Vestli via Majorstuen 
16:11 
Eastbound 
+0

Das hat genau das gemacht, wonach ich gesucht habe. Danke, dass du dir Zeit genommen hast! –

Verwandte Themen