Saya memiliki garis-garis seperti ini, dan saya ingin tahu berapa banyak baris yang saya benar-benar memiliki...
09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00
09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00
09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00
09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00
Apakah ada cara untuk menghitung mereka semua menggunakan perintah linux?
Gunakan wc
:
wc -l <Filename>
Ini akan menampilkan jumlah baris yang di <file>
:
$ wc -l /dir/file.txt
3272485 /dir/file.txt
Atau, untuk menghilangkan <file>
dari hasil penggunaan wc -l < <file>
:
$ wc -l < /dir/file.txt
3272485
Anda juga dapat pipa data untuk wc
juga:
$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
Untuk menghitung semua baris menggunakan:
$ wc -l file
Untuk menyaring dan hanya menghitung garis-garis dengan pola penggunaan:
$ grep -w "pattern" -c file
Atau penggunaan -v untuk membalikkan pertandingan:
$ grep -w "pattern" -c -v file
Melihat grep man page untuk lihat -e,-i dan -x args...
Alat wc
adalah "kata counter" di UNIX dan UNIX-seperti sistem operasi, anda juga dapat menggunakannya untuk menghitung baris dalam sebuah file, dengan menambahkan -l
pilihan, jadi wc -l foo
akan menghitung jumlah baris dalam foo
. Anda juga dapat pipa output dari program seperti ini: ls -l | wc -l
, yang akan memberitahu anda berapa banyak file dalam direktori saat ini.
Jika semua yang anda inginkan adalah jumlah baris (dan bukan jumlah baris dan bodoh file name datang kembali):
wc -l < /filepath/filename.ext
Seperti yang disebutkan sebelumnya ini juga bekerja (tetapi lebih rendah karena alasan lain):
awk 'END{print NR}' file # not on all unixes
sed -n '$=' file # (GNU sed) also not on all unixes
grep -c ".*" file # overkill and probably also slower
I've telah menggunakan ini:
cat myfile.txt | wc -l
Saya lebih suka atas jawaban yang diterima karena tidak mencetak nama file, dan anda don't harus menggunakan awk
untuk memperbaiki kesalahan itu. Jawaban yang diterima:
wc -l myfile.txt
Tapi saya pikir yang terbaik adalah GGB667's jawaban:
wc -l < myfile.txt
Saya mungkin akan menggunakan yang dari sekarang. It's sedikit lebih pendek dari cara saya. Saya memasang lama saya cara melakukannya dalam kasus orang lebih suka itu. Output adalah sama dengan dua metode.
Saya melihat pertanyaan ini ketika saya sedang mencari cara untuk menghitung beberapa file garis, jadi jika anda ingin menghitung beberapa file garis .file txt anda dapat melakukan hal ini,
cat *.txt | wc -l
hal ini juga akan berjalan pada satu .file txt ;)
Saya tahu ini adalah tua tapi masih: Hitung disaring garis
File saya terlihat seperti:
Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error
Jika saya ingin tahu berapa banyak file yang dikirim OK:
grep "OK" <Filename> | wc -l
ATAU
grep -c "OK" filename
Seperti yang orang lain katakan wc -l
adalah solusi terbaik, tapi untuk referensi di masa mendatang anda dapat menggunakan Perl:
perl -lne 'END { print $. }'
$.
berisi nomor baris dan END
blok akan mengeksekusi pada akhir script.
Aku hanya membuat program untuk melakukan hal ini ( dengan node
)
npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html