¿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.