it-swarm-tr.com

dosyadaki satırları say

Eminim bunu yapmanın birçok yolu vardır: Bir metin dosyasındaki satır sayısını nasıl sayabilirim?

$ <cmd> file.txt
1020 lines
75
Chris Smith

Standart yol, neyi sayması gerektiğini belirtmek için (bayt, karakter, kelime vb.) wc şeklindedir; -l satırlar içindir:

$ wc -l file.txt
1020 file.txt
109
Michael Mrozek

Michael'ın dediği gibi, wc -l gidilecek yoldur. Ancak, açık bir şekilde bash, Perl veya awk olmasına rağmen wc değerine sahip değilseniz, işte birkaç çözüm daha var:

Bash okunur

$ LINECT=0; while read -r LINE; do (( LINECT++ )); done < file.txt; echo $LINECT

Perl Çözümleri

$ Perl -lne 'END { print $. }' file.txt

ve çok daha az okunabilir:

$ Perl -lne '}{ print $.' file.txt

Awk Çözümü

$  awk 'END {print NR}' file.txt
17
Steven D

Steven D unuttum GNU sed:

sed -n '$=' file.txt

Ayrıca, dosya adını çıkarmadan sayımı istiyorsanız ve wc kullanıyorsanız:

wc -l < file.txt

Sadece onun için:

cat -n file.txt | tail -n 1 | cut -f1

Kullanırken uyarı kelimesi

wc -l

çünkü wc -l sayarak çalışır\n, eğer dosyanızdaki son satır bir satırsonu ile etkili bir şekilde bitmezse satır sayısı 1 ile kapanacaktır.

Herhangi bir dosyanın son satırı bir satırsonu ile sonlandırma kuralını takip edip etmediğinden asla emin olamadığımdan, satır satırından bağımsız olarak olsun satırın son satırını içerecek olan bu alternatif komutlardan birini kullanmanızı öneririm.

sed -n $= filename
Perl -lne 'END { print $. }' filename
awk 'END {print NR}' filename
grep -c '' filename
11
pretzels1337

Yalnızca bash'ınız varsa ve kesinlikle harici bir aracınız yoksa, aşağıdakileri de yapabilirsiniz:

count=0
while read
do
  ((count=$count+1))
done <file.txt
echo $count

Açıklama: döngü standart girişi satır satır okur (read; yine de okuma girişi ile hiçbir şey yapmadığımız için, saklamak için hiçbir değişken sağlanmaz) ve count değişkenini her seferinde artırır . Yönlendirme nedeniyle (<file.txtdone) sonrasında, döngü için standart girdi file.txt.

3
celtschk

Her zaman grep komutunu aşağıdaki gibi kullanabilirsiniz:

grep -c "^" file.txt

file.txt, son satırının sonunda bir LF karakter) bulunup bulunmadığı.

2
Paolo