Bagaimana cara membaca baris pertama file menggunakan cat?

199

Bagaimana cara membaca baris pertama file menggunakan cat?

Doboy
sumber

Jawaban:

375

Anda tidak perlu cat.

head -1 file

akan bekerja dengan baik.

Carl Norum
sumber
65
+1. Anda hanya perlu kepalanya bukan keseluruhan kucing: P (ekor perintah juga bagian dari bash pun)
SparK
Apakah headmembaca seluruh file dan memotongnya, atau hanya membaca 1 baris?
CMCDragonkai
@ CMCDragonkai, saya kira Anda bisa memeriksa sumbernya .
Carl Norum
2
Saya kira itu hanya membaca baris pertama - itu membuka file ratusan megabyte dalam milidetik.
Brian Haak
1
...mengerti! cat <(head file1) <(head file2). Sumber
James Owers
72

Anda tidak, gunakan headsaja.

head -n 1 file.txt
Orbling
sumber
41

Ada banyak cara berbeda:

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

Anda dapat menggunakan cat file.txt | head -1, tetapi mungkin akan lebih baik menggunakan kepala secara langsung, seperti pada head -1 file.txt.

Mike Pelley
sumber
16

Ini mungkin tidak dapat dilakukan dengan cat. Apakah ada alasan yang harus Anda gunakan cat?

Jika Anda hanya perlu melakukannya dengan perintah bash, ini akan bekerja untuk Anda:

head -n 1 file.txt
mwcz
sumber
9

catsendiri mungkin tidak dimungkinkan, tetapi jika Anda tidak ingin menggunakan headini berfungsi:

 cat <file> | awk 'NR == 1'
josh.trow
sumber
2
Saya kira itu konyol untuk memanggil 'penggunaan kucing yang tidak berguna' pada saluran yang dirancang khusus untuk digunakan cat, bukan.
jkerian
Metode ini hebat karena Anda dapat memilih garis apa pun yang Anda inginkan.
desgua
3
@desgua awkbagus, tetapi Anda tidak perlu di catsini. awk 'NR == 2 {print $0}' <file>melakukan hal yang sama. (Dan banyak lagi, jika Anda belajar sedikit awk.
Eric Wilson
5

Saya terkejut bahwa pertanyaan ini sudah ada selama ini, dan belum ada yang menyediakan pendekatan built-in pra-mapfile.

IFS= read -r first_line <file

... menempatkan baris pertama file dalam variabel yang diperluas "$first_line", semudah itu.

Selain itu, karena readdibangun ke dalam bash dan penggunaan ini tidak memerlukan subkulit, ini jauh lebih efisien daripada pendekatan yang melibatkan subproses seperti headatau awk.

Charles Duffy
sumber
apa IFS=bagian di awal?
Florian Castellane
salahku
Florian Castellane
Baik; dalam hal ini, kliring IFSmencegah spasi putih terdepan dan tertinggal dari string yang dibaca.
Charles Duffy
3

Anda tidak memerlukan perintah eksternal jika Anda memiliki bash v4 +

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

atau jika Anda benar-benar menginginkannya cat

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

:)

jm666
sumber
2

Gunakan perintah di bawah ini untuk mendapatkan baris pertama dari file CSV atau format file apa pun.

head -1 FileName.csv
Praveenkumar Sekar
sumber