Al intentar leer el número de versión de vim
, obtengo muchas líneas adicionales que necesito ignorar. Intenté leer el manual de head
e intenté el siguiente comando:
vim --version | head -n 1
Quiero saber si este es el enfoque correcto.
Al intentar leer el número de versión de vim
, obtengo muchas líneas adicionales que necesito ignorar. Intenté leer el manual de head
e intenté el siguiente comando:
vim --version | head -n 1
Quiero saber si este es el enfoque correcto.
vim --version 2>&1 | sed 1q
:)
Compruebe si su paquete genera esa información stderr
como @WilliamPursell proporciona una verificación.
Respuestas:
Sí, esa es una forma de obtener la primera línea de salida de un comando.
Si el comando genera un error estándar que le gustaría capturar de la misma manera, debe redirigir el error estándar del comando al flujo de salida estándar:
utility 2>&1 | head -n 1
También hay muchas otras formas de capturar la primera línea, incluidas sed 1q
(salir después de la primera línea), sed -n 1p
(solo imprimir la primera línea, pero leer todo), awk 'FNR == 1'
(solo imprimir la primera línea, pero nuevamente, leer todo), etc.
Yo usaría:
awk 'FNR <= 1' file_*.txt
Como señala @Kusalananda, hay muchas formas de capturar la primera línea en la línea de comando, pero usar el head -n 1
puede no ser la mejor opción cuando se usan comodines, ya que imprimirá información adicional. Cambiar 'FNR == i'
a 'FNR <= i'
permite obtener las primeras i líneas.
Por ejemplo, si tiene n archivos llamados file_1.txt, ... file_n.txt:
awk 'FNR <= 1' file_*.txt
hello
...
bye
Pero con head
comodines imprima el nombre del archivo:
head -1 file_*.txt
==> file_1.csv <==
hello
...
==> file_n.csv <==
bye
head -qn1 file_*.txt