Ada banyak utilitas yang tersedia di sistem Linux dan Unix yang memungkinkan Anda untuk memproses dan memfilter file teks. Salah satu dari utilitas tersebut adalah perintah cut.

Perintah Cut adalah utilitas baris perintah yang memungkinkan Anda untuk memotong bagian-bagian baris dari file yang ditentukan, atau data yang disalurkan dan mencetak hasilnya ke output standar. Perintah cut dapat digunakan untuk memotong bagian-bagian baris dengan pembatas, posisi byte, dan karakter.

Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana menggunakan perintah Linux cut melalui contoh-contoh praktis dan penjelasan terperinci dari opsi-opsi cut yang paling umum.

Sintaks untuk perintah cut adalah sebagai berikut:

cut OPTION... [FILE]...

Saat menggunakan perintah cut, Anda hanya dapat menggunakan salah satu dari opsi berikut:

  • -f (--fields=LIST) – Pilih dengan menentukan field (bidang), kumpulan field, atau rentang field. Ini adalah opsi yang paling umum digunakan.
  • -b (--bytes=LIST) -Pilih dengan menentukan byte, seperangkat byte, atau rentang byte.
  • -c (--characters=LIST) – Pilih dengan menentukan karakter, serangkaian karakter, atau rentang karakter.

Pilihan lain adalah:

  • -d (--delimiter) – Tentukan delimiter (pembatas) yang akan digunakan sebagai pengganti pembatas default adalah “TAB”.
  • --complement – melengkapi pilihan. Saat menggunakan opsi ini, cut akan menampilkan semua byte, karakter atau bidang kecuali yang dipilih.
  • -s (--only-delimited) – Secara default cut akan mencetak baris apa pun yang tidak mengandung karakter delimiter. Saat menggunakan opsi ini, cut tidak akan mencetak garis yang tidak terdapat delimiter (pembatas).
  • --output-delimiter – Standarnya adalah menggunakan pembatas input sebagai pembatas output. Opsi ini memungkinkan Anda untuk menentukan string pembatas output yang berbeda.

Perintah cut dapat bekerja baik tanpa argumen atau input berupa FILE. Jika tidak ada FILE yang ditentukan, atau ketika FILE adalah -, maka perintah cut akan membaca input standar.

Argumen LIST yang diteruskan ke opsi -f, -b, dan -c bisa berupa bilangan bulat, beberapa bilangan bulat yang dipisahkan oleh koma, rentang bilangan bulat, atau beberapa rentang bilangan bulat yang dipisahkan oleh koma. Setiap rentang dapat berupa salah satu dari yang berikut:

  • N atau bidang N, byte atau karakter, mulai dari 1.
  • N- dari bidang N, byte atau karakter, hingga akhir baris.
  • N-M dari bidang N ke M, dapat berupa byte, atau karakter.
  • -M dari yang pertama ke bidang M, dapat berupa byte atau karakter.

Cara Menggunakan Cut Berdasarkan Field

Perintah Cut sebagian besar digunakan untuk menampilkan field (bidang) yang dipilih dari setiap baris file atau input standar. Ketika tidak ditentukan pembatas default adalah “TAB”.

Dalam contoh di bawah ini, kita akan menggunakan file berikut. Semua bidang dipisahkan oleh tab.

Silahkan copy dan paste konten berikut dan simpan dengan nama test.txt

245:789 4567    M:4540  Admin   01:10:1980
535:763 4987    M:3476  Sales   11:04:1978

Untuk menampilkan bidang 1 dan 3, maka perintah yang akan Anda gunakan:

cut test.txt -f 1,3
245:789	M:4540
535:763	M:3476

Atau jika Anda ingin menampilkan dari bidang 1 ke 4:

cut test.txt -f -4
245:789	4567	M:4540	Admin
535:763	4987	M:3476	Sales

Cara Cut berdasarkan delimiter (pembatas)

Untuk memotong berdasarkan pembatas gunakan opsi -d diikuti oleh pembatas yang ingin Anda gunakan.

Misalnya untuk menampilkan bidang 1 dan 3 menggunakan “:” sebagai pembatas, Anda harus mengetik:

cut test.txt -d ':' -f 1,3
245:4540	Admin	01
535:3476	Sales	11

Anda dapat menggunakan karakter tunggal apa pun sebagai pembatas. Dalam contoh berikut ini kita menggunakan karakter spasi sebagai pembatas dan mencetak bidang ke-2:

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
ipsum

Penggunaan complement pada Perintah Cut

Untuk complement (melengkapi) daftar bidang pilihan gunakan opsi --complement. Ini akan mencetak hanya bidang-bidang yang tidak dipilih dengan opsi -f.

Perintah berikut akan mencetak semua bidang kecuali tanggal 1 dan 3:

cut test.txt -f 1,3 --complement
4567	Admin	01:10:1980
4987	Sales	11:04:1978

Cara menentukan pembatas pada output

Untuk menentukan pembatas pada output gunakan opsi --output-delimiter. Misalnya, untuk mengatur pembatas output ke _ Anda akan menggunakan:

cut test.txt -f 1,3 --output-delimiter='_'
245:789_M:4540
535:763_M:3476

Cara memotong Bytes dan Karakter

Sebelum melangkah lebih jauh, mari kita membuat perbedaan antara byte dan karakter.

Satu byte adalah 8 bit dan dapat mewakili 256 nilai yang berbeda. Ketika standar ASCII dibuat, standar ini memperhitungkan semua huruf, angka, dan simbol yang diperlukan untuk bekerja dengan bahasa Inggris.

Tabel karakter ASCII memiliki 128 karakter dan setiap karakter diwakili oleh satu byte. Ketika komputer mulai menjadi populer secara global, perusahaan teknologi mulai memperkenalkan pengkodean karakter baru untuk bahasa yang berbeda dan untuk bahasa yang memiliki lebih dari 256 karakter, pemetaan 1 banding 1 tidak dimungkinkan.

Ini mengarah pada berbagai masalah seperti berbagi dokumen atau menjelajahi situs web dan standar Unicode baru yang dapat menangani sebagian besar sistem penulisan dunia diperlukan. UTF-8 diciptakan untuk memecahkan masalah ini. Dalam UTF-8, tidak semua karakter direpresentasikan dengan 1 byte. Karakter dapat direpresentasikan dengan 1 byte hingga 4 byte.

Gunakan opsi -b (--bytes) untuk memotong bagian baris dengan menentukan posisi byte.

Semisal jika kita pilih byte ke-5:

echo 'Indonesia' | cut -b 5
n

Contoh lain mari kita cut pada bidang ke 1, 4 dan 6 bytes:

 echo 'merdeka' | cut -b 1,4,6
mdk

Jika ingin rentang bidang yang ingin di ambil, semisal dari rentang 1 sampai 4 byte:

echo 'Majapahit' | cut -b 1-4
Maja

Pada saat penulisan artikel ini versi cut yang dibundel dalam GNU coreutils tidak memiliki opsi untuk dipotong berdasarkan karakter. Saat menggunakan opsi -c cut berperilaku sama seperti ketika menggunakan opsi -b.

Opsi Umum Penggunaan Perintah cut

Perintah cut biasanya digunakan dalam kombinasi dengan perintah lain melalui piping (|). Berikut ini beberapa contohnya.

Melihat daftar semua user

output dari perintah getent passwd digunakan untuk cut (memotong) yang mencetak bidang 1 yang diajukan menggunakan : sebagai pembatas.

getent passwd | cut -d ':' -f1

Lihat 10 perintah yang paling sering digunakan

Dalam contoh berikut, cut digunakan untuk menghapus 8 byte pertama dari setiap baris output perintah history.

history | cut -c8- | sort | uniq -c | sort -rn | head

Kesimpulan

Sekarang Anda sudah memiliki pemahaman yang baik tentang bagaimana menggunakan perintah cut. Meskipun sangat berguna, perintah cut memiliki beberapa keterbatasan. Salah satu kekurangan adalah tidak mendukung menetapkan lebih dari satu karakter sebagai pembatas dan tidak mendukung banyak desimeter.