Sed для поиска 2 шаблонов, если первый шаблон не существует, распечатайте второй шаблон

у меня есть вопрос о sed. Из этого ввода:

[/=TueGreen.30Orange5:36pmSat*=WedOrange.63Purple6:20pmTue]
[/=Thu6:06pm.05Blue11:32amMon/=Thu1:38am.41Red4:25amThu]
[/=Sun1:49pm.41Yellow2:51pmMon*=FriOrange.68Blue1:24pmTue]
[/=Sat11:58am.24Orange3:44amMon*=Thu1:08am.49Red8:21amSat]

Я должен сделать вывод:

.30
6:06pm.05
1:49pm.41
11:58am.24

Я знаю, шаблон кажется таким простым, но я даже не смог найти шаблон времени. За час иногда 1 или 2 цифры.

Это третий день, когда я изучаю sed и ищу ответ. Я выучил грепа. Так легко, если использовать grep. Но это назначение заставляет меня использовать sed. Пока это мой sed команда:

sed 's/.*([0-9]*:[0-9]*(am|pm)).*//' FILE

результаты показывают только минуты и am / pm. В каждой строке входных данных много временных шаблонов. Но мой результат показывает последний рисунок в каждой строке. Как вы видите ниже:

:20pm
:25am
:24pm
:21am

где я ошибся?

1 ответов


здесь вы идете:

sed -e 's/[^-9]*\([0-9:]*[ap]m\)*\($[0-9.]*\).*//'