paedubucher hat geschrieben: 01.08.2020 19:47:59
Ich muss auch darauf achten, dass im gleichen Block kein
Error drin steckt. Das macht die ganze Übung natürlich noch etwas schwieriger...
Nochmal eine Lösung mit sed; mit Bezug zum End-Date und ohne Errors. Die besorgt sich alle Blöcke (Start-Date bis End-Date), schaut/selektiert ob ein dist-upgrade oder full-upgrade vorhanden ist, entfernt alle Blöcke mit einem Error und gibt dann das Ende-Datum des Blocks aus. Danach noch sort und tail.
Code: Alles auswählen
zcat -f /var/log/apt/history* | sed -En '/^Start-Date:/{h;:a;n;H;/^End-Date:/!ba;x};/(full|dist)-upgrade/{/Error/d;s/^.*\n(End-Date.*)/\1/;s/.* (.*) .*/\1/p}' | sort | tail -1
EDIT:
Da End-Date: immer auf der letzten Zeile eines Blocks liegt, geht es hintenraus auch noch ein wenig kürzer:
Code: Alles auswählen
zcat -f /var/log/apt/history* | sed -En '/^Start-Date:/{h;:a;n;H;/^End-Date:/!ba;x};/(full|dist)-upgrade/{/Error:/d;s/^.*\n.* (.*) .*/\1/p}' | sort | tail -1
EDIT2:
Gelöscht - Falsche Logik!