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


199

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

Réponses:


375

Tu n'as pas besoin cat.

head -1 file

fonctionnera bien.


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

41

Il existe de nombreuses façons différentes:

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

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.


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

9

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

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

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.


quelle est la IFS=partie au début?
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]}

:)


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.