Aquí hay una sed
solució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 s
el carácter de dos puntos :
desde el comienzo ^
de cada línea con la cadena vacía //
.
Aquí hay una awk
solució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 sed
grupos 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 -r
habilita las expresiones regulares extendidas. La opción -n
suprimirá la salida normal de sed
y finalmente el comando p
imprimirá las coincidencias.