Quiero obtener solo digamos tercera línea de df -h
salida.
¿Qué tipo de comando debo usar?
Quiero obtener solo digamos tercera línea de df -h
salida.
¿Qué tipo de comando debo usar?
Respuestas:
El df
comando en realidad acepta un argumento que identifica el sistema de archivos que desea. Entonces podría usar, por ejemplo, df /home
o df /dev/sda3
.
Si tiene la intención de analizar la salida de un script, querrá usarlo df -P
para garantizar que nunca se ajuste a varias líneas. Entonces, por ejemplo, podría usar df -Ph /home | tail -n +2
(pero si está analizando la salida de un script, tenga en cuenta la posibilidad de nombres de archivo con espacios en ellos)
df /home
proporciona un encabezado. Estás interpretando el propósito del usuario. Puede que tengas razón. Puede estar equivocado, ¿quién sabe?
tail -n +2
elimina el encabezado.
Puede usar una combinación de head
y tail
:
df -h | head -3 | tail -1
O
df -h | tail -n +3 | head -1
Pero tenga en cuenta que, df
permite filtrar la salida de las opciones de df
sí mismo, debe verlas primero antes de usar cualquier comando externo.
Compruebe man df
.
Awk es una herramienta de procesamiento de texto, por lo que es apropiada para esta tarea
df -h | awk 'NR == 3'
Supongo que no necesariamente está buscando la tercera línea, sino la línea que menciona un disco específico (por ejemplo /dev/sda3
) o un punto de montaje específico (por ejemplo /home
).
Entonces, en lugar de solo mostrar la tercera línea, que es insegura porque el orden de salida puede cambiar y puede obtener un resultado diferente, puede filtrar la salida por contenido y mostrar solo las líneas que coinciden con un patrón específico o contienen una palabra clave.
Tu herramienta para esto es grep
.
Por ejemplo, si desea la línea sobre el dispositivo /dev/sda3
, escriba:
df -h | grep '/dev/sda3'
Si desea que la línea mencione su directorio de inicio como punto de montaje, use:
df -h | grep '/home'
df -h /dev/sda3
o df -h /home
(este último funciona incluso si no es un punto de montaje).
También puedes usar perl
:
df -h | perl -ne 'print if $.==3'
El $.
es el número de línea actual, por lo que puede imprimir la enésima línea con perl -ne 'print if $.==N'
.
Mi primera idea sería una construcción cabeza-cola.
Ejemplo:
df -h | head -3 | tail -1
head -3
hace que la salida se detenga después de tres líneas y tail -1
solo mostrará la última línea.
Alternativamente, si sabe cómo se verá la salida, también podría usarla grep
para buscar líneas que contengan una cadena determinada.