Come posso leggere la prima riga di un file usando cat?


199

Come posso leggere la prima riga di un file usando cat?

Risposte:


375

Non hai bisogno cat.

head -1 file

funzionerà bene.


65
+1. hai solo bisogno della testa, non dell'intero gatto: P (anche la coda di comando fa parte del gioco di
parole

Fa headleggere l'intero file e tagliarla, o ha letto solo la linea 1?
CMCDragonkai,

@CMCDragonkai, immagino che tu possa controllare la fonte .
Carl Norum,

2
Immagino che legga solo le prime righe: apre un file di centinaia di megabyte in millisecondi.
Brian Haak,

1
...fatto! cat <(head file1) <(head file2). Fonte
James Owers,


41

Ci sono molti modi diversi:

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

21

Potresti usare cat file.txt | head -1, ma probabilmente sarebbe meglio usare direttamente la testa, come in head -1 file.txt.


16

Questo potrebbe non essere possibile con cat. C'è un motivo che devi usare cat?

Se hai semplicemente bisogno di farlo con un comando bash, questo dovrebbe funzionare per te:

head -n 1 file.txt

9

catda solo potrebbe non essere possibile, ma se non si desidera utilizzare headquesto funziona:

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

2
Suppongo che sia sciocco chiamare un "uso inutile di gatto" su una linea appositamente progettata per l'uso cat, non è vero?
jkerian,

Questo metodo è eccezionale perché puoi scegliere qualsiasi riga desideri.
desgua,

3
@desgua awkè fantastico, ma non è necessario catqui. awk 'NR == 2 {print $0}' <file>fa la stessa cosa. (E molto altro, se impari un po ' awk.
Eric Wilson,

5

Sono sorpreso che questa domanda sia in circolazione da sempre e nessuno ha ancora fornito l'approccio integrato pre-mapfile.

IFS= read -r first_line <file

... inserisce la prima riga del file nella variabile espansa "$first_line", facile come quella.

Inoltre, poiché readè incorporato in bash e questo utilizzo non richiede subshell, è significativamente più efficiente degli approcci che coinvolgono sottoprocessi come heado awk.


qual è la IFS=parte all'inizio?
Florian Castellane,


Destra; in questo caso, la cancellazione IFSimpedisce che gli spazi bianchi iniziali e finali vengano rimossi dalla stringa letta.
Charles Duffy,

3

Non hai bisogno di alcun comando esterno se hai bash v4 +

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

o se vuoi davvero cat

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

:)


2

Utilizzare il comando seguente per ottenere la prima riga da un file CSV o qualsiasi formato di file.

head -1 FileName.csv
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.