Я борюсь с регулярным выражением sed.Я посмотрел старые существующие темы по этой теме, но не смог найти решение, и я хотел бы избежать использования команды awk.
Я хочу захватить часть входной строки перед первой отметкой времени встрока.
Случай 1:
$ input_str=abc_123_def_20181217T2345
$ echo $input_str | sed 's/\(.*\)_\([0-9]\{8\}\).*/\1/'
$ abc_123_def
Случай 2:
$ input_str=abc_123_def_20181217T2345_20181218T2345
$ echo $input_str | sed 's/\(.*\)_\([0-9]\{8\}\).*/\1/'
$ abc_123_def_20181217T2345
Ожидаемый результат: abc_123_def
Как видно из случая 2,выражение sed также захватывает первую временную метку.Я понимаю, что .*
будет максимально соответствовать, но как мне обойти это?
Спасибо!