Как мне написать регулярное выражение для sed, которое извлекает только поле DATE из файлов журнала, принимающих оба этих формата даты:
Jun 9 16:56:14 mailserver postfix ...
2017-06-04T06:59:36.984086+02:00 mailserver postfix ...
С awk, выводящим столбец $ 1 будет работать во втором случае, но не в первом.
Попробуйте это:
$ 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