Cat kullanarak bir dosyanın ilk satırını nasıl okurum?


Yanıtlar:


378

İhtiyacınız yok cat.

head -1 file

iyi çalışır.


65
+1. sadece kafanın tümüne ihtiyacın yok: P (komut kuyruğu da bash
pun'in bir

headDosyanın tamamını okuyor ve kesiyor mu yoksa sadece 1 satırı mı okuyor?
CMCDragonkai

@CMCDragonkai, sanırım kaynağı kontrol edebilirsiniz .
Carl Norum

2
Sanırım sadece ilk satırları okuyor - yüzlerce megabaytlık bir dosyayı milisaniye içinde açıyor.
Brian Haak

1
...anladım! cat <(head file1) <(head file2). Kaynak
James Owers


41

Birçok farklı yol var:

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

21

Kullanabilirdiniz cat file.txt | head -1, ancak kafayı doğrudan olduğu gibi doğrudan kullanmak daha iyi olurdu head -1 file.txt.


16

Bu mümkün olmayabilir cat. Kullanmanız için bir neden var catmı?

Bir bash komutuyla yapmanız gerekiyorsa, bu sizin için çalışmalıdır:

head -n 1 file.txt

9

cattek başına mümkün olmayabilir, ancak headbu işleri kullanmak istemiyorsanız :

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

2
Sanırım özel olarak kullanılmak üzere tasarlanmış bir hatta 'kedinin yararsız kullanımı' demek saçma cat, öyle değil mi?
jkerian

Bu yöntem harika çünkü istediğiniz herhangi bir satırı seçebilirsiniz.
desgua

3
@desgua awkharika, ama catburada ihtiyacınız yok. awk 'NR == 2 {print $0}' <file>aynı şeyi yapar. (Ve daha fazlası, biraz öğrenirseniz awk.
Eric Wilson

5

Bu sorunun uzun süredir devam ettiğine şaşırdım ve henüz kimse harita öncesi yerleşik yaklaşımı sunmadı.

IFS= read -r first_line <file

... dosyanın ilk satırını genişletilmiş değişkene koyar, "$first_line"bu kadar kolay.

Dahası, readbash içine yerleştirildiğinden ve bu kullanım alt kabuk gerektirmediğinden, headveya gibi alt süreçleri içeren yaklaşımlardan önemli ölçüde daha etkilidir awk.


ne IFS=başında parçası?
Florian Castellane


Sağ; bu durumda, temizleme, IFSönde gelen ve arkadaki boşlukların okunan dizeden çıkarılmasını önler.
Charles Duffy

3

Eğer bash v4 + 'nız varsa herhangi bir harici komuta ihtiyacınız yoktur

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

ya da gerçekten istiyorsan cat

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

:)


2

CSV dosyasından veya herhangi bir dosya biçiminden ilk satırı almak için aşağıdaki komutu kullanın.

head -1 FileName.csv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.