Supondo que a data esteja sempre entre [
... ]
e esse é o primeiro [
na linha, podemos usar vários métodos. Dois comuns eu uso:
Usando dois comandos cut
(a opção lenta, mas é muito fácil entender o que ela faz):
cut -d'[' -f2 $srcfile | cut -d ']' -f1
A opção padrão sed
, usando uma regex simples:
sed 's/.*\[\([^]]*\)].*//' $srcfile
Se a sua saída for mais complicada com vários caracteres [
, você precisará usar a opção sed
com uma string mais complicada:
sed 's/.*\[\(... ... .. ..:..:.. ....\)].*//' $srcfile
EDIT: A questão revisada quer isso adicionado à frente da string, deixando o resto da linha intocada. Então, usamos a variante sed
com uma pequena alteração:
sed 's/\(.*\[\(... ... .. ..:..:.. ....\)].*\)/[]$/' $srcfile
Resultado:
[Fri Jun 10 06:11:59 2016]$Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
[Fri Jun 11 06:11:59 2016]$Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10