¿Cómo leo la primera línea de un archivo con cat?

Respuestas:

375

No es necesario cat.

head -1 file

Funcionará bien.

Carl Norum
fuente
65
+1. solo necesitas la cabeza, no todo el gato: P (la cola del comando también es parte del juego de palabras bash)
SparK
¿ headLee todo el archivo y lo corta, o lee solo la línea 1?
CMCDragonkai
@CMCDragonkai, supongo que puedes consultar la fuente .
Carl Norum
2
Supongo que solo lee las primeras líneas: abre un archivo de cientos de megabytes en milisegundos.
Brian Haak
1
...¡Entendido! cat <(head file1) <(head file2). Fuente
James Owers
72

Usted no, use headen su lugar.

head -n 1 file.txt
Orbling
fuente
41

Hay muchas maneras diferentes:

sed -n 1p file
head -n 1 file
awk 'NR==1' file
JJJ
fuente
21

Podría usar cat file.txt | head -1, pero probablemente sería mejor usar la cabeza directamente, como en head -1 file.txt.

Mike Pelley
fuente
16

Esto puede no ser posible con cat. ¿Hay alguna razón para usar cat?

Si simplemente necesita hacerlo con un comando bash, esto debería funcionar para usted:

head -n 1 file.txt
mwcz
fuente
9

catpor sí solo puede no ser posible, pero si no quieres usar headesto funciona:

 cat <file> | awk 'NR == 1'
josh.trow
fuente
2
Supongo que es una tontería decir un "uso inútil del gato" en una línea específicamente diseñada para usar cat, ¿no es así?
jkerian
Este método es excelente porque puede elegir cualquier línea que desee.
Desgua
3
@desgua awkes genial, pero no necesitas cataquí. awk 'NR == 2 {print $0}' <file>hace lo mismo (Y mucho más, si aprendes un poco awk.
Eric Wilson
5

Me sorprende que esta pregunta haya existido tanto tiempo como lo ha sido, y nadie ha proporcionado el enfoque integrado previo al mapa previo todavía.

IFS= read -r first_line <file

... pone la primera línea del archivo en la variable expandida por "$first_line", así de fácil.

Además, debido a que readestá integrado en bash y este uso no requiere subshell, es significativamente más eficiente que los enfoques que involucran subprocesos como heado awk.

Charles Duffy
fuente
¿Cuál es la IFS=parte al principio?
Florian Castellane
mi mal, aquí hay una explicación: unix.stackexchange.com/questions/184863/…
Florian Castellane
Correcto; en este caso, la limpieza IFSevita que los espacios en blanco iniciales y finales se eliminen de la cadena que se lee.
Charles Duffy
3

No necesita ningún comando externo si tiene bash v4 +

< file.txt mapfile -n1 && echo ${MAPFILE[0]}

o si realmente quieres cat

cat file.txt | mapfile -n1 && echo ${MAPFILE[0]}

:)

jm666
fuente
2

Use el siguiente comando para obtener la primera fila de un archivo CSV o cualquier formato de archivo.

head -1 FileName.csv
Praveenkumar Sekar
fuente