Bagaimana cara membaca baris pertama file menggunakan cat?


199

Bagaimana cara membaca baris pertama file menggunakan cat?

Jawaban:


375

Anda tidak perlu cat.

head -1 file

akan bekerja dengan baik.


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


41

Ada banyak cara berbeda:

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

21

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


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

9

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

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

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.


apa IFS=bagian di awal?
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]}

:)


2

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

head -1 FileName.csv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.