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.
Cara Menggunakan Perintah Cut
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.