Попробуйте это:
$ cat test.txt
Jun 9 16:56:14 mailserver postfix ...
2017-06-04T06:59:36.984086+02:00 mailserver postfix ...
$ sed 's/^\([0-9:+\.T\-]*\|[A-Z][a-z]*\s*[0-9]*\s[0-9:]*\)\s.*/\1/' < test.txt
Jun 9 16:56:14
2017-06-04T06:59:36.984086+02:00
Объяснение:
- Совпадение в начале строки:
^
- используйте круглые скобки с обратной косой чертой, чтобы указать область интереса для обратной ссылки в замене (см. ниже), т.е. «дата» перед «остальным текстом журнала»
- в скобках: сопоставьте оба варианта (используйте
\|
для обозначения альтернативы обоих подвыражений)
- после скобок: соответствовать остальной части строки, потому что мы хотим ее отбросить (сначала это кажется немного нелогичным, но см. следующий пункт)
- заменить всю строку (именно поэтому мы сопоставляем остальные ) с обратной ссылкой на совпадение даты:
\1
roaima
04.09.2015, 21:07
Ссылка