Вот sed
решение:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Команда sed 's/^://'
выполняет замену s
символа двоеточия :
в начале ^
каждой строки пустой строкой //
.
Вот хитрое awk
решение, в котором мы меняем разделитель полей ^:
, как описано выше, и выводим второе поле (каждой строки):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
Задача может быть выполнена также с grep
( объяснением ), возможно, это может быть самым быстрым решением для большого количества данных:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Или обработайте файл напрямую с помощью следующей команды, в ^
которой снято ограничение :
grep -Po 'Logfile started :\K.*' process.log
Вышесказанное может быть достигнуто также sed
и группами захвата ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Где выражение ^.*<something>.*$
будет соответствовать всей строке, которая содержит <something>
. Команда s/old/new/
заменит эту строку содержимым первой группы захвата (выражение в скобках может быть более конкретным). Опция -r
включает расширенные регулярные выражения. Опция -n
подавит нормальный вывод sed
и, наконец, команда p
напечатает совпадения.