Ecco una sed
soluzione:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Ciò che il comando sed 's/^://'
sta facendo è sostituire s
il carattere di due punti :
dall'inizio ^
di ogni riga con la stringa vuota //
.
Ecco una awk
soluzione 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 sed
e 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 -r
abilita le espressioni regolari estese. L'opzione -n
eliminerà l'output normale di sed
e infine il comando p
stamperà le corrispondenze.