Saya memiliki garis seperti ini, dan saya ingin tahu berapa banyak garis yang sebenarnya saya miliki ...
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 semuanya menggunakan perintah linux?
linux
bash
command-line
scripting
Alucard
sumber
sumber
g <Ctrl-g>
, Ini akan menampilkan jumlah baris, kata, kolom dan byte<esc> :q!
adalah satu-satunya jawaban. (Ini adalah lelucon, ini akan menghapus semua perubahan yang belum disimpan — leluconnya adalah jika Anda tidak tahu vim, mudah untuk mengacaukan file, jadi lebih baik tidak menyimpannya).Jawaban:
Gunakan
wc
:Ini akan menampilkan jumlah baris dalam
<filename>
:Atau, untuk menghilangkan
<filename>
dari hasil gunakanwc -l < <filename>
:Anda juga dapat mengirim data ke pipa
wc
:sumber
wc -l <file> | awk '{print $1}
wc -l < <filename>
cat <file> | wc -l
watch wc -l <filename>
Anda dapat mengikuti file ini secara real-time. Itu berguna untuk file log misalnya.Untuk menghitung semua baris gunakan:
Untuk memfilter dan menghitung hanya garis yang menggunakan pola:
Atau gunakan -v untuk membalikkan kecocokan:
Lihat halaman manual grep untuk melihat argumen -e, -i dan -x ...
sumber
grep -c
bekerja lebih baik untuk saya. Terutama karenawc -l
"fitur" padding awalan ruang yang mengganggu.Atau
sumber
ada banyak cara. menggunakan
wc
adalah satu.wc -l file
yang lain termasuk
awk 'END{print NR}' file
sed -n '$=' file
(Sed GNU)sumber
wc -l file
memberi Anda jumlah baris DAN nama file untuk mendapatkan hanya nama file yang dapat Anda lakukan:filename.wc -l < /filepath/filename.ext
grep -Hc ".*" file
wc -l
menghitung karakter baris baru dan bukan baris aktual dalam file. Semua perintah lain yang termasuk dalam jawaban ini akan memberi Anda nomor yang tepat jika Anda membutuhkannya.Alat
wc
ini adalah "penghitung kata" dalam sistem operasi UNIX dan mirip UNIX, tetapi Anda juga dapat menggunakannya untuk menghitung baris dalam file dengan menambahkan-l
opsi.wc -l foo
akan menghitung jumlah baris dalamfoo
. Anda juga dapat mem-pipe output dari program seperti ini:,ls -l | wc -l
yang akan memberi tahu Anda berapa banyak file di direktori saat ini (ditambah satu).sumber
ls -l | wc -l
sebenarnya akan memberi Anda jumlah file dalam direktori +1 untuk garis ukuran total. Anda dapat melakukannyals -ld * | wc -l
untuk mendapatkan jumlah file yang benar.Jika Anda ingin memeriksa baris total semua file dalam direktori, Anda dapat menggunakan find dan wc:
sumber
Gunakan
wc
:sumber
Jika yang Anda inginkan adalah jumlah baris (dan bukan jumlah baris serta nama file bodoh yang muncul kembali):
Seperti yang disebutkan sebelumnya ini juga berfungsi (tetapi lebih rendah karena alasan lain):
sumber
Gunakan
nl
seperti ini:Dari
man nl
:sumber
wc -l
dilaporkan sebagai 0. Terima kasih.Saya telah menggunakan ini:
Saya lebih suka daripada jawaban yang diterima karena tidak mencetak nama file, dan Anda tidak perlu menggunakannya
awk
untuk memperbaikinya. Jawaban yang diterima:wc -l myfile.txt
Tapi saya pikir yang terbaik adalah jawaban GGB667:
wc -l < myfile.txt
Saya mungkin akan menggunakannya mulai sekarang. Ini sedikit lebih pendek dari jalanku. Saya memasang cara lama saya kalau-kalau ada yang lebih suka. Outputnya sama dengan kedua metode tersebut.
sumber
Di atas adalah metode yang disukai tetapi perintah "cat" juga dapat membantu:
Akan menampilkan seluruh isi file dengan nomor baris.
sumber
Saya melihat pertanyaan ini ketika saya sedang mencari cara untuk menghitung beberapa baris file, jadi jika Anda ingin menghitung beberapa baris file dari file .txt Anda dapat melakukan ini,
itu juga akan berjalan pada satu file .txt;)
sumber
wc -l
tidak menghitung garis.Ya, jawaban ini mungkin agak terlambat untuk pesta, tetapi saya belum menemukan orang yang mendokumentasikan solusi yang lebih kuat dalam jawaban.
Bertentangan dengan kepercayaan populer, POSIX tidak memerlukan file untuk diakhiri dengan karakter baris baru sama sekali. Ya, definisi Baris POSIX 3.206 adalah sebagai berikut:
Namun, yang tidak disadari banyak orang adalah bahwa POSIX juga mendefinisikan POSIX 3.195 Incomplete Line sebagai:
Oleh karena itu, file tanpa trailing
LF
sepenuhnya kompatibel dengan POSIX.Jika Anda memilih untuk tidak mendukung kedua jenis EOF, program Anda tidak kompatibel dengan POSIX.
Sebagai contoh, mari kita lihat file berikut.
Tidak masalah EOF, saya yakin Anda akan setuju bahwa ada dua baris. Anda mengetahuinya dengan melihat berapa banyak garis telah dimulai, bukan dengan melihat berapa banyak garis telah diakhiri. Dengan kata lain, sesuai POSIX, kedua file ini memiliki jumlah baris yang sama:
Halaman manual relatif jelas tentang
wc
penghitungan baris baru, dengan baris baru yang hanya menjadi0x0a
karakter:Karenanya,
wc
bahkan tidak berupaya menghitung apa yang Anda sebut "saluran". Menggunakanwc
untuk menghitung garis dapat menyebabkan kesalahan perhitungan, tergantung pada EOF dari file input Anda.Solusi yang sesuai dengan POSIX
Anda dapat menggunakan
grep
untuk menghitung garis seperti pada contoh di atas. Solusi ini lebih kuat dan tepat, dan mendukung semua rasa berbeda dari apa yang bisa menjadi garis dalam file Anda:sumber
grep -oE '\d+'
: Untuk mengembalikan nomor digit SAJA .sumber
Hanya mengembalikan jumlah garis
sumber
Redirection / Piping output file ke
wc -l
cukup, seperti berikut:yang kemudian akan memberikan no. hanya garis.
sumber
Atau hitung semua baris dalam subdirektori dengan pola nama file (mis. File log dengan cap waktu dalam nama file):
sumber
Saya tahu ini sudah tua tapi tetap saja: Hitung garis yang difilter
File saya terlihat seperti:
Jika saya ingin tahu berapa banyak file yang dikirim OK:
ATAU
sumber
hitung jumlah baris dan simpan hasil dalam variabel menggunakan perintah ini:
count=$(wc -l < file.txt) echo "Number of lines: $count"
sumber
Seperti yang orang lain katakan
wc -l
adalah solusi terbaik, tetapi untuk referensi di masa mendatang Anda dapat menggunakan Perl:$.
berisi nomor baris danEND
blok akan dieksekusi di akhir skrip.sumber
dir | perl -lne 'END { print $. }' Can't find string terminator "'" anywhere before EOF at -e line 1.'
perl -lne '}{ print $. '
melakukan hal yang sama.Saya baru saja membuat program untuk melakukan ini (dengan
node
)https://github.com/danschumann/gimme-lines/tree/master
sumber
wc -l <filename>
Ini akan memberi Anda jumlah baris dan nama file dalam output.
Misalnya.
wc -l 24-11-2019-04-33-01-url_creator.log
Keluaran
63 24-11-2019-04-33-01-url_creator.log
Menggunakan
wc -l <filename>|cut -d\ -f 1
untuk mendapatkan hanya jumlah baris dalam output.
Misalnya.
wc -l 24-11-2019-04-33-01-url_creator.log|cut -d\ -f 1
Keluaran
63
sumber
wc -l < filename
wc -l < filename
berbeda denganwc -l filename
, yang pertama menggunakan pengalihan dan kemudian tidak ada nama file dalam output, seperti yang ditunjukkan dalam jawaban dari user85509Fungsi shell portabel drop-in ini [ℹ] bekerja seperti pesona. Cukup tambahkan cuplikan berikut ke
.bashrc
file Anda (atau setara dengan lingkungan shell Anda) .Ini harus sepenuhnya kompatibel dengan semua shell yang mendukung POSIX selain bash dan zsh .
sumber