banner large

Cara Menggunakan Perintah wc di Linux

Comment
X
Share
Laptop Linux menampilkan prompt bash
fatmawati achmad zaenuri/Shutterstock.com

Menghitung jumlah baris, kata, dan byte dalam file berguna, tetapi fleksibilitas Linux yang sebenarnya wc perintah berasal dari bekerja dengan perintah lain. Mari lihat.

Apa Perintah wc?

Itu wc perintah adalah aplikasi kecil. Ini adalah salah satu utilitas inti Linux, jadi tidak perlu menginstalnya. Itu sudah ada di komputer Linux Anda.

Anda dapat menggambarkan apa yang dilakukannya dalam beberapa kata. Ini menghitung baris, kata, dan byte dalam file atau pilihan file dan mencetak hasilnya di jendela terminal. Itu juga dapat mengambil inputnya dari aliran STDIN, artinya teks yang Anda inginkan untuk diproses dapat disalurkan ke dalamnya. Di sinilah wc benar-benar mulai menambah nilai.

Ini adalah contoh bagus dari mantra Linux “lakukan satu hal dan lakukan dengan baik.” Karena menerima input pipa, dapat digunakan dalam mantra multi-perintah. Seperti yang akan kita lihat, utilitas kecil yang berdiri sendiri ini sebenarnya adalah pemain tim yang hebat.

Salah satu cara yang saya gunakan wc adalah sebagai pengganti dalam perintah yang rumit atau alias saya sedang memasak. Jika perintah yang sudah selesai berpotensi merusak dan menghapus file, saya sering menggunakan wc sebagai pengganti untuk perintah yang nyata dan berbahaya.

Dengan begitu, selama pengembangan perintah saya mendapatkan umpan balik visual bahwa setiap file sedang diproses seperti yang saya harapkan. Tidak ada kemungkinan hal buruk terjadi saat saya bergulat dengan sintaks.

Sesederhana wc adalah, masih ada beberapa kebiasaan kecil yang perlu Anda ketahui.

Memulai dengan wc

Cara paling sederhana untuk digunakan wc adalah untuk meneruskan nama file teks pada baris perintah.

wc lorem.txt

Menggunakan wc dengan file dengan satu baris teks yang panjang

Hal ini menyebabkan wc untuk memindai file dan menghitung baris, kata, dan byte, dan menuliskannya ke jendela terminal.

Kata-kata dianggap sebagai sesuatu yang dibatasi oleh spasi. Apakah itu kata-kata dari bahasa asli atau bukan, itu tidak relevan. Jika file tidak berisi apa-apa selain “frd g lkj”, itu masih dihitung sebagai tiga kata.

Baris adalah urutan karakter yang diakhiri oleh carriage return atau akhir file. Tidak masalah jika baris itu terbungkus di editor Anda atau di jendela terminal, sampai wc menemukan carriage return atau akhir file, itu masih baris yang sama.

Contoh pertama kami menemukan satu baris di seluruh file. Berikut isi dari file “lorem.txt”.

cat lorem.txt

Isi file dengan satu baris panjang

Semua itu dihitung sebagai satu baris karena tidak ada carriage return. Bandingkan ini dengan file lain, “lorem2.txt”, dan bagaimana wc menafsirkannya.

wc lorem2.txt
cat lorem2.txt

Menggunakan wc dengan file dengan banyak baris

Kali ini, wc menghitung 15 baris karena carriage return telah dimasukkan ke dalam teks untuk memulai baris baru pada titik tertentu. Namun, jika Anda menghitung baris dengan teks di dalamnya, Anda akan melihat hanya ada 12 baris.

Tiga baris lainnya adalah baris kosong di akhir file. Ini hanya berisi pengembalian pengangkutan. Meskipun tidak ada teks di baris ini, baris baru telah dimulai dan jadi wc menghitung mereka seperti itu.

Kami dapat mengirimkan banyak file ke wc seperti yang kita suka.

wc lorem.txt lorem2.txt

Menggunakan wc dengan dua file

Kami mendapatkan statistik untuk setiap file individual dan total untuk semua file.

Kami juga dapat menggunakan wildcard sehingga kami dapat memilih file yang cocok daripada file yang dinamai secara eksplisit.

wc *.txt *.?

Menggunakan wc dengan wildcard

Opsi Baris Perintah

Secara default, wc akan menampilkan baris, kata, dan byte di setiap file. Ini sama dengan menggunakan -l (garis) -w (kata-kata) dan -c (byte) pilihan.

wc lorem.txt
wc -l -w -c lorem.txt

Menggunakan wc dengan opsi baris, kata, dan byte

Kita dapat menentukan kombinasi angka mana yang ingin kita lihat.

wc -l lorem.txt

wc -w lorem.txt

wc -c lorem.txt

wc -l -c lorem.txt

Menggunakan wc dengan kombinasi opsi

Perhatian khusus harus diberikan pada gambar terakhir, yang dihasilkan oleh -c (byte) pilihan. Banyak orang salah mengira ini sebagai menghitung karakter. Itu benar-benar penting byte. Jumlah karakter dan jumlah byte mungkin sama. Tapi tidak selalu.

Mari kita lihat isi file bernama “unicode.txt.”

cat unicode.txt

Konten file yang berisi karakter non-Latin

Ini memiliki tiga kata dan karakter alfabet non-Latin. Kami akan membiarkan wc memproses file dengan pengaturan default bytedan kami akan melakukannya lagi tetapi meminta karakter dengan -m (karakter) pilihan.

wc unicode.txt
wc -l -w -m unicode.txt

Menghitung byte dalam file dan kemudian menghitung karakter dalam file yang sama

Ada lebih banyak byte daripada karakter.

Mari kita lihat hex dump file dan lihat apa yang terjadi. Itu hexdump perintah -C (kanonik) opsi menampilkan byte dalam file dalam baris 16, dengan ekuivalen ASCII biasa (jika ada) ditampilkan di akhir baris. Jika tidak ada karakter ASCII yang sesuai, tanda titik “.” ditampilkan sebagai gantinya.

hexdump -C unicode.txt

Hexdump dari file pendek dengan karakter non-Latin

Dalam ASCII, nilai heksadesimal dari 0x20 mewakili karakter ruang. Jika kita menghitung tiga nilai dari kiri, kita melihat nilai berikutnya adalah karakter spasi. Jadi tiga nilai pertama itu 0x62, 0x6fdan 0x79 mewakili huruf dalam “anak laki-laki.”

Melompati 0x20kita melihat kumpulan tiga nilai heksadesimal lainnya: 0x63, 0x61dan 0x74. Ini mengeja “kucing.” Melompati karakter spasi berikutnya, kita melihat tiga nilai lagi untuk huruf dalam “anjing.” Ini adalah 0x64, 0x5fdan 0x67.

Tepat di belakang kata “anjing” kita bisa melihat karakter luar angkasa 0x20, dan lima nilai heksadesimal lainnya. Dua yang terakhir adalah carriage return, 0x0a.

Tiga byte lainnya mewakili karakter non-Latin, yang kami beri warna hijau. Ini adalah karakter Unicode, dan dibutuhkan tiga byte untuk mengkodekannya. Ini adalah 0xe1, 0xafdan 0x8a.

Jadi, pastikan Anda tahu apa yang Anda hitung, dan byte dan karakter tidak harus sama. Biasanya, menghitung byte lebih berguna karena memberi tahu Anda apa yang sebenarnya dalam berkas. Menghitung dengan karakter memberi Anda banyak hal diwakili oleh isi file.

TERKAIT: Apa Pengkodean Karakter Seperti ANSI dan Unicode, dan Bagaimana Perbedaannya?

Mengambil Nama File Dari File

Ada cara lain untuk memberikan nama file ke wc . Anda dapat memasukkan nama file ke dalam file, dan meneruskan nama itu mengajukan ke wc. Ini membuka file, mengekstrak nama file, dan memprosesnya seolah-olah telah diteruskan pada baris perintah. Ini memungkinkan Anda untuk menyimpan kumpulan nama file yang berubah-ubah untuk digunakan kembali.

Tapi ada gotcha, dan itu yang besar. Nama file harus batal dihentikan, bukan Kereta kembali dihentikan. Artinya, setelah setiap nama file harus ada byte nol dari 0x00 alih-alih byte carriage return biasa 0x0a.

Anda tidak dapat membuka editor dan membuat file dengan format ini. Biasanya, file seperti ini dihasilkan oleh program lain. Tetapi, jika Anda memiliki file seperti itu, inilah cara Anda menggunakannya.

Berikut file kami yang berisi nama file. Membukanya di less menunjukkanmu yang aneh”^@”karakter yang less digunakan untuk menunjukkan byte nol.

less source-files-list.txt

File dalam ukuran kurang yang berisi byte nol

Untuk menggunakan file dengan wckita perlu menggunakan --files0-from (baca input dari) opsi dan berikan nama file yang berisi nama file.

wc ---files0-from=source-files-list.txt

wc memproses file dengan nama file yang diakhiri null

File diproses persis seolah-olah disediakan di baris perintah.

Pemipaan Input ke wc

Cara yang jauh lebih umum, fleksibel, dan produktif untuk mengirim masukan ke wc adalah untuk menyalurkan output dari perintah lain ke wc . Kita dapat mendemonstrasikan ini dengan echo memerintah.

echo "Count this for me" | wc
echo -e "Count this\nfor me" | wc

Menggunakan echo untuk mengirim input ke wc

Kedua echo perintah menggunakan -e (karakter yang lolos) opsi untuk memungkinkan urutan yang lolos seperti “\n” kode pemformatan baris baru. Ini menyuntikkan baris baru, menyebabkan wc untuk melihat input sebagai dua baris.

Berikut adalah rangkaian perintah yang memberi masukan dari satu ke yang lain.

find ./* -type f | rev | cut -d'.' -f1 | rev | sort | uniq
  • Temukan mencari file (type -f) secara rekursif, dimulai dari direktori saat ini. rev membalikkan nama file.
  • memotong mengekstrak bidang pertama (-f1) dengan mendefinisikan pembatas bidang menjadi titik “.” dan membaca dari “depan” nama file yang dibalik hingga periode pertama yang ditemukan. Kami sekarang telah mengekstrak ekstensi file.
  • putaran membalikkan bidang pertama yang diekstraksi.
  • menyortir mengurutkannya dalam urutan abjad.
  • unik daftar entri unik ke jendela terminal.

Daftar ekstensi unik di pohon direktori saat ini

Perintah ini mencantumkan semua ekstensi file unik di direktori saat ini dan subdirektori apa pun.

Jika kita menambahkan -c (hitung) opsi ke uniq perintah itu akan menghitung kejadian dari setiap jenis ekstensi. Tetapi jika kita ingin tahu berapa banyak ekstensi file yang unik dan berbeda, kita bisa drop wc sebagai perintah terakhir di telepon, dan gunakan -l (garis) pilihan.

find ./* -type f | rev | cut -d'.' -f1 | rev | sort | uniq | wc -l

Menambahkan wc untuk menghitung ekstensi unik

TERKAIT: Cara Menggunakan Perintah potong Linux

Dan akhirnya

Ini satu trik terakhir wc bisa lakukan untuk Anda. Ini akan memberi tahu Anda panjang baris terpanjang dalam file. Sayangnya, itu tidak memberi tahu Anda baris mana itu. Itu hanya memberi Anda panjangnya.

wc -L taf.c

Mendapatkan panjang baris terpanjang dalam file dengan wc

Namun berhati-hatilah, tab itu dihitung sebagai delapan spasi. Dilihat di editor saya, ada tiga tab dua spasi di awal baris itu. Panjang sebenarnya adalah 124 karakter. Jadi angka yang dilaporkan diperluas secara artifisial.

Saya akan memperlakukan fungsi ini dengan sedikit garam. Dan maksud saya, jangan menggunakannya. Outputnya menyesatkan.

Terlepas dari keanehannya, wc adalah alat yang hebat untuk memasukkan perintah pipa ketika Anda perlu menghitung semua jenis nilai, bukan hanya kata-kata dalam file.

TERKAIT: 37 Perintah Linux Penting yang Harus Anda Ketahui

Leave a Reply

Your email address will not be published.