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.