Voici une sed
solution:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
La commande sed 's/^://'
remplace s
le caractère deux-points :
du début ^
de chaque ligne par la chaîne vide //
.
Voici une awk
solution 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 sed
groupes 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 -r
active les expressions régulières étendues. L'option -n
supprimera la sortie normale de sed
et enfin la commande p
affichera les correspondances.