Aquí hay una sedsolución:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Lo que sed 's/^://'está haciendo el comando es sustituir sel carácter de dos puntos :desde el comienzo ^de cada línea con la cadena vacía //.
Aquí hay una awksolución complicada , donde cambiamos el separador de campo a ^:, descrito anteriormente, y sacamos el segundo campo (de cada línea):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
La tarea podría llevarse a cabo también con grep( explicación ), probablemente esta podría ser la solución más rápida para una gran cantidad de datos:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
O procese el archivo directamente con el siguiente comando, donde ^se elimina la limitación :
grep -Po 'Logfile started :\K.*' process.log
Lo anterior también podría lograrse mediante sedgrupos de captura ()->\1:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Donde la expresión ^.*<something>.*$coincidirá con la línea completa, que contiene <something>. El comando s/old/new/sustituirá esta línea por el contenido del primer grupo de captura (la expresión entre paréntesis podría ser más concreta). La opción -rhabilita las expresiones regulares extendidas. La opción -nsuprimirá la salida normal de sedy finalmente el comando pimprimirá las coincidencias.