2016-09-06 4 views
0

В настоящее время я создаю сценарий, который будет показывать следующие отклонения от станции метро прямо у меня.Использование регулярных выражений для удаления строк между двумя строками

У меня есть шаблон (\b\d$|Westbound), который будет фиксировать номер строки и направление. Однако, как удалить линии между ними? Поиск вокруг этого не дал мне никаких результатов для этого.

Рассмотрим вывод:

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 

В формате:

Line 
Name of line 
Time 
Direction 

Вопрос заключается в том, есть ли способ, с помощью СЭД, что я могу отфильтровать все линии, идущие, скажем, Westbound так что единственными напечатанными линиями будут:

5 
Ringen via Storo 
12 min 
Eastbound 

5 
Vestli via Majorstuen 
16:11 
Eastbound 

Это означало бы удаление любого сегмента текста, который начинается с wi th и заканчивается Westbound. Возможно ли это с помощью регулярных выражений и встроенных инструментов в bash, или было бы лучше найти обходной путь для этой проблемы?

Заранее благодарен!

+3

Ладно, так что вы знаете очень хорошо, что вы хотите сделать, я полагаю, что вы пытаетесь сделать это на самом деле. StackOverflow не то место, где люди реализуют программы для вас, это место, где вы реализуете программу, и люди помогают вам, когда у вас есть конкретный вопрос. – Tomalak

+0

Является ли приведенный выше результат, созданный скриптом _you_? Если да, почему бы не изменить этот скрипт? – redneb

+0

Regex может быть _part_ решения здесь, но я думаю, вам понадобится дополнительный инструмент для чтения и обработки каждого абзаца. Возможно, sed может это сделать, возможно, Java и C#. –

ответ

0

Выполнение этого -

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 
}' 

- генерирует следующий вывод -

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

Это точно то, что я искал. Спасибо, что нашли время! –

Смежные вопросы