A uno de mis colegas se le ocurrió una consulta:¿Cómo eliminar la primera/última línea 'n' de la salida de un comando en Shell? Por ejemplo, quería recortar todas las líneas innecesarias de la salida de un comando:systemctl
e imprima solo las líneas necesarias. El comando systemctl
contenía pocas líneas genéricas al final de la salida como se muestra a continuación. Bueno, quiere eliminar esas líneas e imprimir el resto.
A continuación se muestra el comando antes de recortar las líneas innecesarias.
$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'.
En el resultado anterior, quiere enumerar solo los servicios eliminando las últimas 7 líneas (el espacio también es una línea).
Solución :Usar head
comando para eliminar las últimas 7 líneas como se muestra a continuación:
$ systemctl -a --type=service | head -n -7
Nota :el - symbol
antes de las 7, que es muy importante.
Cómo eliminar el primer n
líneas de la salida de un comando de shell
Para eliminar el primer n
lineas desde la salida de un comando de shell use tail
. El siguiente comando de ejemplo elimina las primeras 7 líneas de la salida del comando de shell.
Nota :el + symbol
antes de las 7, que es muy importante.
$ systemctl -a --type=service | tail -n +7