Hier ist eine sed
Lösung:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Der Befehl sed 's/^://'
ersetzt s
das Doppelpunktzeichen :
am Anfang ^
jeder Zeile durch die leere Zeichenfolge //
.
Hier ist eine knifflige awk
Lösung, bei der wir das ^:
oben beschriebene Feldtrennzeichen auf ändern und das zweite Feld (jeder Zeile) ausgeben:
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
Die Aufgabe könnte auch mit grep
( Erklärung ) erledigt werden , wahrscheinlich könnte dies die schnellste Lösung für große Datenmengen sein:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Oder verarbeiten Sie die Datei direkt mit dem folgenden Befehl, wobei die Einschränkung ^
entfernt wird:
grep -Po 'Logfile started :\K.*' process.log
Das Obige könnte auch von sed
und Capture-Gruppen erreicht werden ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Wo der Ausdruck ^.*<something>.*$
mit der gesamten Zeile übereinstimmt, enthält das <something>
. Der Befehl s/old/new/
ersetzt diese Zeile durch den Inhalt der ersten Erfassungsgruppe (der Ausdruck in den Klammern könnte konkreter sein). Die Option -r
aktiviert die erweiterten regulären Ausdrücke. Die Option -n
unterdrückt die normale Ausgabe von sed
und schließlich p
druckt der Befehl die Übereinstimmungen.