Aqui está uma sed
solução:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
O que o comando sed 's/^://'
está fazendo é substituir s
o caractere de dois pontos :
do início ^
de cada linha pela string vazia //
.
Aqui está uma awk
solução complicada , na qual alteramos o separador de campos para ^:
, descrito acima, e produzimos o segundo campo (de cada linha):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
A tarefa poderia ser realizada também com grep
( explicação ), provavelmente esta poderia ser a solução mais rápida para grande quantidade de dados:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Ou processe o arquivo diretamente pelo seguinte comando, onde a limitação ^
é removida:
grep -Po 'Logfile started :\K.*' process.log
O acima pode ser alcançado também por sed
grupos de captura e ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Onde a expressão ^.*<something>.*$
corresponderá à linha inteira, que contém <something>
. O comando s/old/new/
substituirá essa linha pelo conteúdo do primeiro grupo de captura (a expressão entre colchetes pode ser mais concreta). A opção -r
ativa as expressões regulares estendidas. A opção -n
suprimirá a saída normal de sed
e, finalmente, o comando p
imprimirá as correspondências.