Quiero obtener solo digamos tercera línea de df -hsalida.
¿Qué tipo de comando debo usar?
Quiero obtener solo digamos tercera línea de df -hsalida.
¿Qué tipo de comando debo usar?
Respuestas:
El dfcomando en realidad acepta un argumento que identifica el sistema de archivos que desea. Entonces podría usar, por ejemplo, df /homeo df /dev/sda3.
Si tiene la intención de analizar la salida de un script, querrá usarlo df -Ppara 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 /homeproporciona un encabezado. Estás interpretando el propósito del usuario. Puede que tengas razón. Puede estar equivocado, ¿quién sabe?
tail -n +2elimina el encabezado.
Puede usar una combinación de heady tail:
df -h | head -3 | tail -1
O
df -h | tail -n +3 | head -1
Pero tenga en cuenta que, dfpermite filtrar la salida de las opciones de dfsí 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/sda3o 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 -3hace que la salida se detenga después de tres líneas y tail -1solo mostrará la última línea.
Alternativamente, si sabe cómo se verá la salida, también podría usarla greppara buscar líneas que contengan una cadena determinada.