Perintah wc: Menghitung Baris dan Kata, serta Memakai wc -l dengan Pipe
Perintah wc adalah perintah Linux yang menghitung lalu menampilkan jumlah baris, kata, dan byte dalam sebuah file. Jika Anda menghitung baris file contoh log akses server web dengan wc -l, hasilnya 10, dan jika Anda menyaring hanya respons 404 dengan grep lalu meneruskannya ke wc -l, Anda dapat melihat jumlah permintaan yang gagal, 3, sebagai satu angka.
Log, isi file, dan folder kerja /root/work di bawah ini adalah nilai contoh. Log tersebut adalah file sepuluh baris yang dibuat dengan alamat IP khusus dokumentasi, dan file lainnya juga semuanya dibuat untuk pengujian.
1️⃣ Cara dasar memakai perintah wc dan membaca keluarannya
Bentuk dasar perintahnya adalah wc, lalu opsi, lalu file. Jika Anda hanya memberi file tanpa opsi, wc menampilkan jumlah baris, jumlah kata, dan jumlah byte secara berurutan, lalu menambahkan nama file di bagian akhir.
cd /root/workwc access.log 10 100 766 access.logPada hasil penghitungan log akses, 10 adalah jumlah baris, 100 jumlah kata, dan 766 jumlah byte.
Untuk melihat satu angka saja, tambahkan salah satu dari -l, -w, atau -c.
wc -l access.log10 access.logwc -w access.log100 access.logwc -c access.log766 access.logJika Anda memberi file yang tidak ada, muncul pesan galat dan kode keluarnya 1.
wc nosuch.txtwc: nosuch.txt: No such file or directoryecho $?12️⃣ Menghitung baris dengan wc -l dan pipe
Jika nama file ikut tampil saat menghitung baris, Anda perlu memotong nama itu sekali lagi ketika menyimpan angkanya ke variabel skrip. Jika file diteruskan lewat pengalihan (<) atau pipe, wc tidak mengetahui nama file sehingga hanya menampilkan angkanya.
wc -l < access.log10cat access.log | wc -l10Dengan menaruh grep sebelum pipe, Anda bisa menghitung hanya baris yang memenuhi syarat. Pencarian menyertakan spasi sebelum dan sesudah kode respons 404, dan ada tiga baris yang berisi 404.
grep ' 404 ' access.log | wc -l3Untuk menghitung berapa IP yang terhubung, potong hanya kolom pertama, hapus baris yang berulang dengan sort -u, lalu hitung. Dalam log sepuluh baris itu ada empat IP yang berbeda.
cut -d ' ' -f 1 access.log | sort -u192.0.2.10
192.0.2.44
198.51.100.7
203.0.113.25cut -d ' ' -f 1 access.log | sort -u | wc -l4wc -l menghitung jumlah karakter baris baru. Karena itu, pada file yang baris terakhirnya tidak diakhiri baris baru, wc -l menampilkan 1 meskipun cat menampilkan dua baris.
cat no-newline.txtfirst line
last linewc -l no-newline.txt1 no-newline.txtJika jumlah baris keluar kurang satu, periksa dulu apakah baris terakhir diakhiri baris baru.
3️⃣ Opsi wc dan jumlah karakter dengan -c dan -m
Dalam UTF-8, huruf Inggris dan angka memakai 1 byte per karakter, sedangkan karakter Korea (Hangul) dan ☕ masing-masing memakai 3 byte. Karena itu, pada file yang hanya berisi teks Inggris, jumlah byte dari -c dan jumlah karakter dari -m sama, tetapi begitu ada huruf Korea, kedua angka itu berbeda. Perbandingan ini memakai file berisi dua baris nama menu dalam bahasa Korea dan satu baris dalam bahasa Inggris.
cat menu.txt아메리카노
카페 라테 ☕
teawc -c menu.txt38 menu.txtwc -m menu.txt18 menu.txt-c menghasilkan 38 dan -m menghasilkan 18, selisih 20. Itu adalah tambahan 2 byte yang dipakai oleh masing-masing sembilan karakter Korea dan ☕, jadi untuk file yang berisi huruf Korea, hitung dengan -m agar sesuai dengan jumlah karakter sebenarnya. Pengukuran dilakukan pada locale C.UTF-8, dan menurut manual, -m menghitung dalam satuan karakter locale tersebut.
-L menampilkan lebar tampilan baris terpanjang. Pada log akses, baris terpanjang selebar 82 kolom; pada file menu, setiap karakter Korea dan ☕ memakai dua kolom, sehingga baris 7 karakter menghasilkan 12.
wc -L access.log82 access.logwc -L menu.txt12 menu.txtHuruf Latin beraksen memakai 2 byte per karakter dalam UTF-8. Ini diukur terpisah dengan file yang hanya berisi satu baris café.
cat cafe.txtcaféwc -c cafe.txt6 cafe.txtwc -m cafe.txt5 cafe.txt-c menghasilkan 6 dan -m menghasilkan 5, karena satu é memakai 1 byte lebih banyak. Huruf Inggris dan angka memakai 1 byte, huruf beraksen seperti é memakai 2 byte, dan karakter Korea serta ☕ memakai 3 byte, sehingga jumlah byte bisa berbeda meskipun jumlah karakternya sama.
Tabel berikut merangkum perintah yang cocok untuk tiap tugas beserta angka yang dihitung di artikel ini.
| Tugas | Perintah | Hasil ukur di artikel ini |
|---|---|---|
| Mendapatkan jumlah baris saja sebagai angka | wc -l < access.log | 10Angka saja, tanpa nama file |
| Menghitung baris yang memenuhi syarat | grep ‘ 404 ‘ access.log | wc -l | 3Baris dengan respons 404 |
| Menghitung nilai yang berbeda | cut -d ‘ ‘ -f 1 access.log | sort -u | wc -l | 4Jumlah IP yang berbeda |
| Memeriksa ukuran file | wc -c access.log | 766Jumlah byte |
| Jumlah karakter file yang berisi huruf Korea | wc -m menu.txt | 1838 jika file yang sama dihitung dengan -c |
| Lebar tampilan baris terpanjang | wc -L access.log | 8212 untuk file menu, yang menghitung tiap karakter Korea sebagai dua kolom |
| Total baris beberapa file | wc -l *.log | 13Total di baris total |
4️⃣ Total beberapa file dengan wc di Linux
Jika Anda memberi beberapa file, wc menampilkan satu baris per file dan menambahkan totalnya di baris terakhir sebagai total. Jika log akses dan log galat dihitung bersama, angka 13 di baris total adalah jumlah baris kedua file itu.
wc access.log error.log 10 100 766 access.log
3 11 76 error.log
13 111 842 totalUntuk menghitung sekaligus log yang ekstensinya sama, gunakan wildcard. Shell mengubah *.log menjadi nama-nama file sebelum meneruskannya, jadi hasilnya sama dengan menuliskan setiap nama file satu per satu.
wc -l *.log 10 access.log
3 error.log
13 totalFile dengan ekstensi berbeda juga bisa dihitung sekaligus jika namanya ditulis berurutan. Dua log dan file menu yang dihitung bersama menghasilkan total 16.
wc -l access.log error.log menu.txt 10 access.log
3 error.log
3 menu.txt
16 total🔲 Simulator perintah wc
Di simulator di bawah ini, Anda bisa mengetik sendiri wc pada file contoh dari artikel ini. Dengan chip Anda bisa mencoba -l, -m, dan penghitungan lewat pipe, dan jika Anda menambah satu baris ke access.log lalu menghitung lagi, angkanya bertambah.
🔢 FAQ & Konten yang Direkomendasikan
Linux · Teks
Perintah sort Linux: mengurutkan file
Opsi dan contoh sort untuk mengurutkan isi file menurut abjad, urutan naik, atau urutan turun.
Linux · Teks
Perintah uniq Linux
Cara memakai uniq untuk menyisakan satu dari baris yang berulang dan menghitung jumlah pengulangannya dengan -c.
Linux · Teks
Perintah head dan perintah tail Linux
Opsi dan cara memakai head, yang menampilkan 10 baris pertama file, dan tail, yang menampilkan 10 baris terakhir.
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.