Comment lire la première ligne d'un fichier avec cat?

199

Comment lire la première ligne d'un fichier en utilisant cat?

Doboy
la source

Réponses:

375

Tu n'as pas besoin cat.

head -1 file

fonctionnera bien.

Carl Norum
la source
65
+1. vous avez seulement besoin de la tête et non du chat entier: P (la queue de commande fait aussi partie du jeu de mots bash)
SparK
Lit-t-il headl'intégralité du fichier et le coupe-t-il, ou lit-il uniquement la ligne 1?
CMCDragonkai
@CMCDragonkai, je suppose que vous pouvez vérifier la source .
Carl Norum
2
Je suppose qu'il ne lit que les premières lignes - il ouvre un fichier de centaines de mégaoctets en millisecondes.
Brian Haak
1
...je l'ai! cat <(head file1) <(head file2). Source
James Owers
72

Vous n'avez pas, utilisez à la headplace.

head -n 1 file.txt
Orbling
la source
41

Il existe de nombreuses façons différentes:

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

Vous pouvez utiliser cat file.txt | head -1, mais il serait probablement préférable d'utiliser directement head, comme dans head -1 file.txt.

Mike Pelley
la source
16

Cela peut ne pas être possible avec cat. Y a-t-il une raison que vous devez utiliser cat?

Si vous avez simplement besoin de le faire avec une commande bash, cela devrait fonctionner pour vous:

head -n 1 file.txt
mwcz
la source
9

catseul peut ne pas être possible, mais si vous ne souhaitez pas utiliser headces travaux:

 cat <file> | awk 'NR == 1'
josh.trow
la source
2
Je suppose qu'il est stupide d'appeler une «utilisation inutile de chat» sur une ligne spécialement conçue pour être utilisée cat, n'est-ce pas?
jkerian
Cette méthode est excellente car vous pouvez choisir n'importe quelle ligne de votre choix.
desgua
3
@desgua awkest génial, mais vous n'en avez pas besoin catici. awk 'NR == 2 {print $0}' <file>fait la même chose. (Et bien plus, si vous apprenez un peu awk.
Eric Wilson
5

Je suis surpris que cette question existe depuis aussi longtemps que cela, et personne n'a encore fourni l'approche intégrée pré-mapfile.

IFS= read -r first_line <file

... place la première ligne du fichier dans la variable développée par "$first_line", aussi simple que cela.

De plus, parce qu'il readest intégré à bash et que cette utilisation ne nécessite aucun sous-shell, il est nettement plus efficace que les approches impliquant des sous-processus tels que headou awk.

Charles Duffy
la source
quelle est la IFS=partie au début?
Florian Castellane
ma mauvaise, voici une explication: unix.stackexchange.com/questions/184863/…
Florian Castellane
Droite; dans ce cas, l'effacement IFSempêche les espaces de début et de fin d'être supprimés de la chaîne lue.
Charles Duffy
3

Vous n'avez besoin d'aucune commande externe si vous avez bash v4 +

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

ou si vous voulez vraiment cat

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

:)

jm666
la source
2

Utilisez la commande ci-dessous pour obtenir la première ligne d'un fichier CSV ou de n'importe quel format de fichier.

head -1 FileName.csv
Praveenkumar Sekar
la source