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


199

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

Respuestas:


375

No es necesario cat.

head -1 file

Funcionará bien.


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


41

Hay muchas maneras diferentes:

sed -n 1p file
head -n 1 file
awk 'NR==1' file

21

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


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

9

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

 cat <file> | awk 'NR == 1'

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.


¿Cuál es la IFS=parte al principio?
— 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]}

:)


2

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

head -1 FileName.csv
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.