GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo eliminar las primeras/últimas líneas 'n' de la salida del comando en Shell?

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

Linux
  1. Cómo enumerar los módulos cargados o habilitados en PHP desde la línea de comandos

  2. ¿Cómo establecer una variable igual a la salida de un comando en Grub2?

  3. ¿Cómo eliminar las primeras N líneas de un archivo ASCII usando los comandos de Shell?

  4. Cómo eliminar la base de datos mysql a través del comando de shell

  5. Obtenga la primera línea de la salida de un comando de shell

Cómo eliminar líneas en Vim / Vi

Cómo eliminar archivos y directorios en Linux desde la línea de comandos

Cómo ejecutar comandos de Shell a través del servidor HTTP

Cómo redirigir la salida del comando de shell

Eliminar directorio en Linux:cómo eliminar una carpeta desde la línea de comandos

Cómo quitar líneas de un archivo usando el comando Sed