it-swarm-id.com

menghitung baris dalam suatu file

Saya yakin ada banyak cara untuk melakukan ini: bagaimana saya bisa menghitung jumlah baris dalam file teks?

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

Cara standar adalah dengan wc, yang membutuhkan argumen untuk menentukan apa yang harus dihitung (byte, karakter, kata-kata, dll.); -l adalah untuk baris:

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

Seperti kata Michael, wc -l adalah cara untuk pergi. Tetapi, untuk berjaga-jaga jika Anda secara tidak sengaja memiliki bash, Perl, atau awk tetapi tidak wc, berikut adalah beberapa solusi:

Khusus bash

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

Solusi Perl

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

dan yang jauh lebih mudah dibaca:

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

Solusi Awk

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

Steven D lupa GNU sed:

sed -n '$=' file.txt

Juga, jika Anda ingin penghitungan tanpa menghasilkan nama file dan Anda menggunakan wc:

wc -l < file.txt

Hanya untuk itu:

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

Kata peringatan saat menggunakan

wc -l

karena wc -l berfungsi dengan menghitung\n, jika baris terakhir dalam file Anda tidak berakhir di baris baru secara efektif, jumlah baris akan dimatikan oleh 1. (maka konvensi lama meninggalkan baris baru di akhir file Anda)

Karena saya tidak pernah bisa yakin apakah ada file yang mengikuti konvensi untuk mengakhiri baris terakhir dengan baris baru atau tidak, saya sarankan menggunakan salah satu dari perintah alternatif ini yang akan menyertakan baris terakhir dalam hitungan terlepas dari baris baru atau tidak.

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

Jika Anda hanya memiliki bash dan sama sekali tidak ada alat eksternal yang tersedia, Anda juga dapat melakukan hal berikut:

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

Penjelasan: loop membaca input standar baris demi baris (read; karena kita tidak melakukan apa-apa dengan input read, tidak ada variabel yang disediakan untuk menyimpannya), dan meningkatkan variabel count setiap kali . Karena pengalihan (<file.txt setelah done), input standar untuk loop adalah dari file.txt.

3
celtschk

Anda selalu dapat menggunakan perintah grep sebagai berikut:

grep -c "^" file.txt

Ini akan menghitung semua baris aktual file.txt, apakah baris terakhirnya mengandung karakter LF di bagian akhir.

2
Paolo