Einer meiner Kollegen hat sich eine Frage ausgedacht – Wie lösche ich die ersten/letzten 'n' Zeilen aus der Ausgabe eines Befehls in der Shell? Beispielsweise wollte er alle unnötigen Zeilen aus der Ausgabe eines Befehls entfernen – systemctl
und drucken Sie nur die notwendigen Zeilen. Der Befehl systemctl
enthielt einige generische Zeilen am Ende der Ausgabe, wie unten gezeigt. Nun, er möchte diese Zeilen entfernen und den Rest drucken.
Unten ist der Befehl, bevor die unnötigen Zeilen abgeschnitten werden.
$systemctl -a --type=service ...... systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and Directories systemd-udev-trigger.service loaded active exited udev Coldplug all Devices systemd-udevd.service loaded active running udev Kernel Device Manager systemd-update-done.service loaded active exited Update is Completed systemd-update-utmp-runlevel.service loaded inactive dead Update UTMP about System Runlevel Changes systemd-update-utmp.service loaded active exited Update UTMP about System Boot/Shutdown systemd-user-sessions.service loaded active exited Permit User Sessions systemd-vconsole-setup.service loaded active exited Setup Virtual Console tuned.service loaded active running Dynamic System Tuning Daemon LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 92 loaded units listed. To show all installed unit files use 'systemctl list-unit-files'.
In der obigen Ausgabe möchte er nur die Dienste auflisten, indem er die letzten 7 Zeilen entfernt (Leerzeichen ist auch eine Zeile).
Lösung :Verwenden Sie head
Befehl zum Entfernen der letzten 7 Zeilen wie unten gezeigt:
$ systemctl -a --type=service | head -n -7
Hinweis :das - symbol
vor 7, was sehr wichtig ist.
Wie man die ersten n
entfernt Zeilen aus der Ausgabe eines Shell-Befehls
Zum Entfernen des ersten n
Linien aus der Ausgabe eines Shell-Befehls verwenden Sie tail
. Der folgende Beispielbefehl entfernt die ersten 7 Zeilen aus der Ausgabe des Shell-Befehls.
Hinweis :das + symbol
vor 7, was sehr wichtig ist.
$ systemctl -a --type=service | tail -n +7