Quiero obtener solo digamos tercera línea de df -h
salida.
¿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
df
comando en realidad acepta un argumento que identifica el sistema de archivos que desea. Entonces podría usar, por ejemplo,df /home
odf /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 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 /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
ytail
:O
Pero tenga en cuenta que,
df
permite filtrar la salida de las opciones dedf
sí 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/sda3
odf -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 -3
hace que la salida se detenga después de tres líneas ytail -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.fuente