Quiero obtener solo digamos tercera línea de df -hsalida.
¿Qué tipo de comando debo usar?
command-line
text-processing
emrecnl
fuente
fuente

Respuestas:
Esto generará la tercera línea, independientemente del contenido.
fuente
df -h|sed -n 3p.El
dfcomando en realidad acepta un argumento que identifica el sistema de archivos que desea. Entonces podría usar, por ejemplo,df /homeodf /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 usardf -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)fuente
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
headytail:O
Pero tenga en cuenta que,
dfpermite filtrar la salida de las opciones dedfsí mismo, debe verlas primero antes de usar cualquier comando externo.Compruebe
man df.fuente
Awk es una herramienta de procesamiento de texto, por lo que es apropiada para esta tarea
fuente
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:Si desea que la línea mencione su directorio de inicio como punto de montaje, use:
fuente
df -h /dev/sda3odf -h /home(este último funciona incluso si no es un punto de montaje).También puedes usar
perl:El
$.es el número de línea actual, por lo que puede imprimir la enésima línea conperl -ne 'print if $.==N'.fuente
Mi primera idea sería una construcción cabeza-cola.
Ejemplo:
head -3hace que la salida se detenga después de tres líneas ytail -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.fuente