Voici une sedsolution:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
La commande sed 's/^://'remplace sle caractère deux-points :du début ^de chaque ligne par la chaîne vide //.
Voici une awksolution délicate , où nous changeons le séparateur de champ en ^:, décrit ci-dessus, et sortons le deuxième champ (de chaque ligne):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
La tâche pourrait également être accomplie avec grep( explication ), cela pourrait probablement être la solution la plus rapide pour une grande quantité de données:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Ou traitez le fichier directement par la commande suivante, où la limitation ^est supprimée:
grep -Po 'Logfile started :\K.*' process.log
Les objectifs ci-dessus pourraient également être atteints par des sedgroupes de capture ()->\1:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Où l'expression ^.*<something>.*$correspondra à toute la ligne, qui contient <something>. La commande s/old/new/remplacera cette ligne par le contenu du premier groupe de capture (l'expression entre crochets pourrait être plus concrète). L'option -ractive les expressions régulières étendues. L'option -nsupprimera la sortie normale de sedet enfin la commande paffichera les correspondances.