Ecco una sedsoluzione:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Ciò che il comando sed 's/^://'sta facendo è sostituire sil carattere di due punti :dall'inizio ^di ogni riga con la stringa vuota //.
Ecco una awksoluzione complicata , in cui cambiamo il separatore di campo in ^:, descritto sopra, e produciamo il secondo campo (di ogni riga):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
L'attività potrebbe essere eseguita anche con grep( spiegazione ), probabilmente questa potrebbe essere la soluzione più veloce per una grande quantità di dati:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Oppure elabora il file direttamente con il comando seguente, dove ^viene rimossa la limitazione :
grep -Po 'Logfile started :\K.*' process.log
Quanto sopra potrebbe essere realizzato anche da sede catturare gruppi ()->\1:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Dove l'espressione ^.*<something>.*$corrisponderà all'intera riga, che contiene <something>. Il comando s/old/new/sostituirà questa riga con il contenuto del primo gruppo di acquisizione (l'espressione tra parentesi potrebbe essere più concreta). L'opzione -rabilita le espressioni regolari estese. L'opzione -neliminerà l'output normale di sede infine il comando pstamperà le corrispondenze.