Fungsi dan Contoh penggunaan perintah cut di linux terminal
Perintah cut adalah utilitas command line yang berfungsi memotong baris dari data teks dari file, stdin seperti piped dan dijadikan standard out put (stdout). Fungsi dasarnya dalah memotong dengan delimiter, posisi byte, field dan karakter.
Perintah cut memiliki struktur perintah dan opsi sebagai berikut :
cut OPTION... [FILE]...
Opsi | Deskripsi |
---|---|
-b, --bytes=LIST | Pilih dengan menentukan byte, seperangkat byte, atau rentang byte. |
-c, --characters=LIST | Pilih dengan menentukan karakter, serangkaian karakter, atau rentang karakter. |
-f, --fields=LIST | Pilih dengan menentukan field (bidang), kumpulan field, atau rentang field. Ini adalah opsi yang paling umum digunakan. |
-d, --delimiter=DELIM | Tentukan delimiter (pembatas) yang akan digunakan sebagai pengganti pembatas default adalah “TAB”. |
--output-delimiter=STRING | Standarnya adalah menggunakan pembatas input sebagai pembatas output. Opsi ini memungkinkan Anda untuk menentukan string pembatas output yang berbeda. |
--complement | melengkapi pilihan. Saat menggunakan opsi ini, cut akan menampilkan semua byte, karakter atau bidang kecuali yang dipilih. |
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 bidangN
, byte atau karakter, mulai dari 1.N-
dari bidangN
, byte atau karakter, hingga akhir baris.N-M
dari bidangN
keM
, dapat berupa byte, atau karakter.-M
dari yang pertama ke bidangM
, dapat berupa byte atau karakter.
Data berikut digunakan utuk uji coba.
Cut menggunakan posisi Field
Apel|green 4 $5:$20
Pisang|yellow 6 $2:$12
Rasberi|red 99 $1:$99
Anggur|purple 10 $5:$50
Field sendiri adalah kolom data yang di pisahkan oleh delimiter. 1 baris data teks bisa terbagi menjadi beberapa kolom.
Contoh pertama ini menampilkan data field ke-1 dari setiap baris.
# cut -f 1 data.txt
Contoh berikutnya menampilkan data dari field ke-1 dan ke-3.
# cut -f 1,3 data.txt
Contoh selanjutnya menampilkan data dari field 1 sampai ke-3.
cut -f 1-3 data.txt
Dari contoh-contoh diatas, space tidak di hitung sebagai karakter dan bukan delimiter, whitespace tab /t
yang menjadi delimiter default.
Cut menggunakan posisi Karakter.
Perintqh cut dapat memotong karakter dari posisi karater pada baris data.
Berikut ini contoh memotong karakter dari urutan ke 6 dan seteruanya pada setiap baris data.
# cut -c 6- data.txt
[root@alma8 coba]# cut -c 6- data.txt
green 4 $5:$20
g|yellow 6 $2:$12
ri|red 99 $1:$99
r|purple 10 $5:$50
Dari output yang ditampilkan diatas proses pemotongan delimiter default tetap di hitung dapam urutan karakter.
Cut menggunakan posisi Byte
Penggunaan byte -b memiliki hamnpir sama hasil dengan karakter -c, tapi akan ada perbedaan yang bisa dilihat dari contoh berikut yang mencetak hasil pootng dari byte 6 dan seterusnya dari data file data.txt.
# cut -b 6- data.txt
[root@alma8 coba]# cut -b 6- data.txt
green 4 $5:$20
g|yellow 6 $2:$12
ri|red 99 $1:$99
r|purple 10 $5:$50
sekilas penggunaan menggunakan opsi byte ini akan sama dengan karakter, tapi ketika berhadapan dengan multibyte karakter seperti dibawah akan terliat hasilnya.
[root@alma8 coba]# echo Ăpel | cut -b 1
▒
[root@alma8 coba]# echo Ăpel | cut -b 1-2
Ă
[root@alma8 coba]# echo Ăpel | cut -c 1
Ă
untuk mendapatkan karakter Ă menggunakan byte di perlukan 2 byte. Sedangkan karakter terhitung 1 karakter.
Cut menggunakan Delimiter
Penggunaan Delimiter ini untuk merubah pembatas field yang defaultnya adalah whitespace /t
. Pada contoh berikut ini merubah Delimiter menjadi karakter |
dan mencetak field 1 dan field 2.
# cut -d "|" -f 1 data.txt
# cut -d "|" -f 2 data.txt
Hasilnya terbagi menjadi 2 field dimana field ke-1 adalah data sebelum karakter | dan field ke-2 data setelahnya, pebrdaan bisa dibandingkan dengan hasil field 1 pada contoh sebelumnya.
Contoh lainnya dimana hasil dari delimiter membagi menjadi 3 field dari 1 field data.
# echo "apel|pisang|melon" | cut -d "|" -f 2
[root@alma8 coba]# echo "apel|pisang|melon" | cut -f 1
apel|pisang|melon
[root@alma8 coba]# echo "apel|pisang|melon" | cut -d "|" -f 2
pisang
Hasil cetak field ke-2 adalah pisang dari data awal yang merupakan 1 field.
Merubah Delimiter saat dicetak stdout
Delimiter bisa dirubah saat dicetak, misal dalam hal ini melanjutkan contoh sebelumnya data “apel|pisang|melon” menggunakan delimtier karakter |
, saat dicetak diubah menjadi karakter -
# echo "apel|pisang|melon" | cut -d "|" -f 1-3 --output-delimiter="-"
Pada Penggunaan Harian Cut Biasa digunakan Seperti Contoh Berikut
Ingin mendapatkan info detail database dari file wp-config.php
[root@alma8 wordpress]# grep DB_ wp-config.php | cut -d "'" -f 4
wp_main
wp_muse
pcvb8yu
localhost
utf8
Kombinasi dengan perintah grep mendapatkan hasil stdin yang spesifik yang lalu di pipe ke perintah selanjutnya cut untuk memotong data field yang diinginkan.
Mendapatkan data spesifik seperti user dan id dari file /etc/passwd
[root@alma8 ~]# grep :: /etc/passwd | cut -d ":" -f 1,3
chrony:993
setroubleshoot:991
web1:1000
coba:1001
Kombinasi grep disini untuk melakukan pencarian isi file yang tidak berafiliasi dengan aplikasi karena lalu hasilnya menjadi stdin piping cut.
Kesimpulan
Penggunaan perintah cut sangat efisien dalam melakukan pengolahan data teks yang sederhana denganformat teks teratur. Untuk teks yang kompleks memang lebih cocok menggunakan perintah awk